You've built an application and would like it to run a single instance. Here comes Mutex to the rescue! To do that you have to create a Mutex object at startup and when its over release it.

First add System.Threading namespace:

using System.Threading;

Then create a boolean variable and a Mutex object to control if Mutex is owned by application

bool isMutexOwned;

Mutex mut = null;

Then create a Mutex instance and control this Mutex via isMutexOwned boolean var.

using(Mutex mut=new Mutex(true,"My Mutex",out isMutexOwned))
{
if(isMutexOwned)
{
//Do Something...Mutex is owned by the application
}
else
{
//Mutex isnt owned.So other instances can run.
}
}

public void ReleaseMut()
{
mut.ReleaseMutex();
}


Add a Button Click event and raise ReleaseMut function. See what happens.
After that another instance of application will now run.