Hi TrooperIronMan, I once did it with a Splash class, basically a simple dialog window, showing some fixed text (program name, version number) and a listbox reporting initialization progress. Two public methods: ReportProgress(string) and Close(). The program's static main() method basically consisted of: using (Splash splash=new Splash(...) ) { splash.Show(); // check environment, license, whatever splash.ReportProgress("Checking ..."); // check for singleton splash.ReportProgress("Checking for another instance"); Form1 form=new Form1(splash); splash.Close(); Application.Run(form); } Main reason for using the splash was when not first instance, main would send command line to first instance, using remoting; firewall (ZoneAlarm) sometimes needs 30 seconds to provide the dialog "Application has changed; allow access ?", so the user was left in the dark. I even added a /noserver switch to skip the remoting stuff while debugging (ZoneAlarm notices the EXE keeps changing, so asks over and over). Cheers
Luc Pattyn