Alex Rivera | Logout

Restrict multiple instances of an application

Asked 2009-07-30T14:47:38.267
12

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,

Edit
Report

1 Answer

9

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");
    }
}
answered 2009-07-30T14:50:47.603

Your Answer