My Dev/C#
[C#, .Net] 뮤텍스(mutex)를 이용한 프로그램 중복 실행 방지
kiya14
2020. 5. 4. 11:11
윈폼을 이용해 프로그램을 만들었을때, 프로그램을 한개만 실행되도록 해야 할때가 있습니다
이런 경우 C#의 뮤텍스(mutex) 클래스를 이용해 프로그램의 중복 실행을 막을 수 있습니다
뮤텍스(mutex)는 상호 배제(mutual exclusion)의 약자로 프로세스나 스레드등이 동시에 접근해서는 안되는 공유영역을 뜻합니다
C#에서는 Mutex클래스를 제공해서 비교적 쉽게 구현할수 있죠
그럼 바로 구현해보도록 하겠습니다
먼저 중복실행을 방지할 프로젝트의 Program.cs를 엽니다
그 다음 Program.cs의 소스코드를 아래와 같이 바꿔줍니다
namespace TestFrm { static class Program { /// <summary> /// 해당 애플리케이션의 주 진입점입니다. /// </summary> [STAThread] static void Main() { bool flagMutex; System.Threading.Mutex m_hMutex = new System.Threading.Mutex(true, "TestFrm", out flagMutex); if (flagMutex) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // 실행할 Form 클래스 Application.Run(new Form1()); m_hMutex.ReleaseMutex(); } else { // 여러개 실행시켰을때 띄울 메시지 MessageBox.Show("프로그램이 이미 실행 중입니다", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
프로그램 중복 실행시 아래와 같이 나온다면 성공입니다