본문 바로가기

Dev::DotNet/C#

다중 실행 방지를 위한 Mutex

하나의 프로그램이


두개 이상의 프로세스가 실행되지 않게 해야할 때가 있다.


나의 경우에는 여러 프로그램들이 프로그램 A 를 계속 Shell 로 호출하기 때문에 


A 가 하나의 프로세스만 실행되어 있고 


그 뒤에 실행되는 A의 다른 프로세스 들은 자기가 Shell 로 넘겨받은 파라매터만


처음 실행된 프로세스에게 전달해주고 자신은 죽어버리는 그러한 것이 필요했다.


찾다보니 여러 방법들이 있었는데....


그 중 다중 프로세스 실행 방지 를 위한 방법중 가장 심플한 방법은 Mutex 를 이용한 방법인 것 같다.


bool IsCreateNew;


using (System.Threading.Mutex m = new System.Threading.Mutex(true, "ProccessName", out IsCreateNew))

{

if (IsCreateNew)

      {

// 해당 프로세스가 처음 실행된 경우

}

else

{

// 이미 동일한 프로세스가 실행되어 있는 경우

}

}


엄청 심플하다. 


내가 Mutex 를 사용한 가장 큰 이유는 Shell 호출을 이용한 파라매터 전달이였기 때문에....


요정도의 기능만 필요해서 그 뒤의 Mutex 의 많은 기능들은 찾아보진 않았다...ㅡㅡ;


여담으로 다른 프로세스로 파라매터를 전달하기 위해서 Remoting 을 사용했다.


Shell 호출을 이용하여 단일 프로세스를 유지하면서 파라매터를 넘기는 것...


에 대해서 단순한 방법을 알고 계신 고마운 분인 계시면...부디..자비를...