본문 바로가기

Development/.Net

꿈으로 가는 작은 계단 :: .NET 중복 실행 방지

반응형

   

어플리케이션을 개발 하다 보면 같은 프로그램이 두번 실행 되지 않아야 하는 경우 종종 생깁니다.

이를 해결 하기 위해 여러 방법이 있지만.. 이번 포스팅에 소개 내용은 커널 동기화 객체 하나인 뮤텍스(Mutex) 이용하여 해결하는 방법을 소개하려 합니다.

   

Mutex .NET System.Threding 네이스페이스에 포함된 클래스 입니다. 사실 둘이상의 스레드가 동시에 공유될 있는 리소스에 접근 할때 데드락의 위험이 있으므로 동기화 매커니즘이 필요하게 되는데요. Mutex 리소스에 대한 단독 엑세스 권한을 하나의 스레드에만 부여하여 동기화하는 기본형식 입니다.

같은 리소스에 접근 할때 하나의 스레드가 Mutex 걸고 어떠한 일을 수행 경우 다른 스레드는 먼저 수행하고 있는 스레드가 Mutex 해제 할때까지 기다리게(일시중지) 되게 됩니다.

Mutex 관한 자세한 설명은 아래의 링크에서 MSDN 도움말을 확인 있습니다.

http://msdn.microsoft.com/ko-kr/library/system.threading.mutex.mutex.aspx

   

테스트 하는 어플리케이션으로는 Windows Form 프로젝트를 예로 들겠습니다.

WinForm 프로젝트를 생성하면 Program.cs 생성 됩니다.

Main 함수에 다음과 같은 코드를 추가 시켜 주면 메세지 막스가 뜨면서 해당하는 프로그램이 중복 실행 되었다는걸 알릴 있습니다. 매우 간단하죠?


view plaincopy to clipboardprint?

 

 


view plaincopy to clipboardprint?

우선 Mutex 생성하고, 생성자에 두번째 인자에 뮤텍스 이름을 지정합니다.

세번째 인자로준 bool 값이 false 경우 이미 뮤텍스가 걸리있는 상태이기 때문에.. 해당 프로젝트가 이미 생성되었다고 생각하고 프로그램이 실행중이라는 메세지 박스를 띄우고, 프로그램을 종료합니다.

   

이상 간단한 Mutex 사용한 프로그램 중복 방지 방법이었습니다.

   

<http://falconer.tistory.com/344>에서 삽입

반응형

'Development > .Net' 카테고리의 다른 글

Classic ASP 한글 깨짐  (4) 2014.10.24
지역화로 다국어 지원  (0) 2010.10.25
VS2008 웹파트 설정  (0) 2010.09.08
VS2008 활용  (0) 2010.08.06
팀 탐색기 2008에서 TFS 2010으로 연결하기  (0) 2010.07.26