Possible Duplicate:
What is the correct way to create a single instance application?
I have a Winforms app, which launches a splash screen via the following code:
Hide(); bool done = false; // Below is a closure which will work with outer variables. ThreadPool.QueueUserWorkItem(x => { using (var splashForm = new SplashScreen()) { splashForm.Show(); while (!done) Application.DoEvents(); splashForm.Close(); } }); Thread.Sleep(3000); done = true; The above is in the main form's codebehind and called from the load event handler.
However, how can I ensure that only one instance of the application will load at a time? In the load event handler of the main form, I could check if the process list is on the system (via GetProcessesByName(...)), but is there a better method?
Using .NET 3.5.
Application.Run(splashForm)instead of aDoEvents()loop.