하나의 프로그램이
두개 이상의 프로세스가 실행되지 않게 해야할 때가 있다.
나의 경우에는 여러 프로그램들이 프로그램 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 호출을 이용하여 단일 프로세스를 유지하면서 파라매터를 넘기는 것...
에 대해서 단순한 방법을 알고 계신 고마운 분인 계시면...부디..자비를...
'Dev::DotNet > C#' 카테고리의 다른 글
System.Environment.CurrentDirectory 의 경로 (0) | 2012.08.04 |
---|---|
Assembly 의 Version 을 날짜로 바꾸기 (1) | 2012.08.03 |
네트워크 폴더 접속 (0) | 2012.08.02 |
실수를 정수로 형변환 할때 (0) | 2012.07.31 |
Unhandled Exception 에 대한 처리 (1) | 2012.07.21 |