Search code examples
c#.netc#-2.0multiple-instances

Restrict multiple instances of an application


Okay, so i've created my c# application, created an installer for it and have it working installed on my machine.

The problem is, when the user opens the application exe twice, there will be two instances of the application running. I only ever want one instance of the application to be running at any time, how do I go about doing this?

Thanks for your help,


Solution

  • The common technique for this is to create a named Mutex and check for its presence on application start.

    See this or this.

    Code from DDJ:

    class App : Form
    {
        Mutex mutex;
    
        App()
        {
            Text = "Single Instance!";
            mutex = new Mutex(false, "SINGLE_INSTANCE_MUTEX");
            if (!mutex.WaitOne(0, false)) 
            {
                mutex.Close();
                mutex = null;
            }
        }
    
        protected override void Dispose(bool disposing)
        {
            if (disposing)
                mutex.ReleaseMutex();
            base.Dispose(disposing);
        }
    
        static void Main()
        {
            App app = new App();
            if (app.mutex != null) Application.Run(app);
            else MessageBox.Show("Instance already running");
        }
    }