수 많은 방법이 있겠으나 mutex를 사용하는 방법이 비교적 단순하고 이해하기 쉽다. 먼저 코드를 보자.
Mutex mtx = new Mutex(false, "SINGLE_INSTANCE_APP_MUTEX");
if (!mtx.WaitOne(0, false))
{
mtx.Close();
mtx = null;
Console.WriteLine("StockyDBBuiler aleady running!");
return;
}
프로그램이 시작하면 이름있는 Mutex(Named Mutex)를 하나 생성하고 신호를 받을 수 있는지 본다. 만약 신호를 받지 못한다면 이미 이전 인스턴스가 생성되어 있다는 것을 의미하게 된다.