본문 바로가기
개발언어/C#.NET

C# 중복 실행방지 하기

by 엔돌슨 2009. 11. 6.
반응형

방법 1~ 3
1. Mutex :

        bool createdNew ;
        // MyMutex라는 문자열을 유니크하게 구성하면 더 좋습니다.
        Mutex gM1 = new Mutex(true,"MyMutex", out createdNew);
                       
        if (createdNew)
        {
                Application.Run(new Form1());
                gM1.ReleaseMutex();
        }
        else
                MessageBox.Show("이미 실행되어 있습니다.");

 

2. Process.GetProcessesByName :

        private void DoublePlayCHK()
        {
            try
            {
                throw new System.NotImplementedException();
            }
            catch(NotImplementedException)
            {
                Process[] myProcesses = Process.GetProcessesByName("TimeOff");

                if (myProcesses.Length > 1)
                {
                    MessageBox.Show("[TimeOff]가 이미 실행 중입니다.", "TimeOff", MessageBoxButtons.OK);
                    Application.Exit();
                }
            }
        }

 

3. Process.GetProcesses :

        processcount = 0;

        Process[] procs;

        procs = Process.GetProcesses();

        foreach(Process aProc in procs)

        {

            if(aProc.ProcessName.ToString().Equals("KotraServer"))

            {

                processcount++;

             }

        }

        if(processcount == 1)

            Application.Run(new ServerMain());

        else

        {

            MessageBox.Show("이미 실행되어 있습니다.");

            return;

        }

[출처] C# 중복실행 체크|작성자 지니