'뮤텍스'에 해당되는 글 1건

  1. 2009/02/12 뮤텍스를 사용한 다중실행 방지(C#)
2009/02/12 22:44

뮤텍스를 사용한 다중실행 방지(C#)

많이 쓰이는건데..
WinApp의 다중실행을 방지하는 샘플입니다.
Program.cs를 아래와 같이 변경해주세요.


    static class Program
    {
        // 어플리케이션의 이름
        private static string strAppConstName = "적당한 어플리케이션의 이름";

        // 다중기동을 방지하는 뮤텍스인스턴스
        private static Mutex mutexObject;

        [STAThread]
        static void Main()
        {
            // Windows 2000(NT 5.0)이후만 글로벌 뮤텍스가 사용가능
            OperatingSystem os = Environment.OSVersion;
            if ((os.Platform == PlatformID.Win32NT) && (os.Version.Major >= 5))
            {
                strAppConstName = @"Global\" + strAppConstName;
            }

            try
            {
                // 뮤텍스를 생성
                mutexObject = new Mutex(false, strAppConstName);
            }
            catch (ApplicationException e)
            {
                // 글로벌 뮤텍스에 의한 다중실행 방지
                MessageBox.Show("이미 실행되고 있습니다.", "다중실행방지");
                return;
            }

            // 뮤텍스를 취득
            if (mutexObject.WaitOne(3000, false))
            {
                //실행
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new frm_SignIn());

                //프로그램사용이 끝났으니 뮤텍스를 해방
                mutexObject.ReleaseMutex();
            }
            else
            {               
                //이미 실행중이니 경고 메시지
                MessageBox.Show("이미 실행되고 있습니다.", "다중실행방지");
            }

            // 뮤텍스를 파기하고 완전종료
            mutexObject.Close();

        }
    }

Trackback 0 Comment 0