윈폼을 이용해 프로그램을 만들었을때, 프로그램을 한개만 실행되도록 해야 할때가 있습니다

이런 경우 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);
            }
        }
    }
}

 

프로그램 중복 실행시 아래와 같이 나온다면 성공입니다

+ Recent posts