C#에서 이벤트를 사용하여 하나의 인스턴스만 시작

1901 단어 C#.net
프로그램이 이미 실행되었는지 판단하기 때문에 프로그램은 하나의 실례만 실행할 수 있다. 여러 가지 방법이 있다. 다음은 두 가지를 기록한다.
방법1: 라인 상호 배척
static class Program
    {
        private static System.Threading.Mutex mutex;

        /// 
        ///          。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            mutex = new System.Threading.Mutex(true, "OnlyRun");
            if (mutex.WaitOne(0, false))
            {
                Application.Run(new MainForm());
            }
            else
            {
                MessageBox.Show("       !", "  ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Application.Exit();
            }
        }
    }

방법2:
프로세스의 이름을 검사하는 방법은 절대적으로 효과가 없습니다.첫 번째 실례를 열면 실행 파일의 이름을 바꾸면 두 번째 실례를 실행할 수 있기 때문이다.
static class Program
    {
        /// 
        ///          。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // get the name of our process
            string p = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
            // get the list of all processes by that name
            System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(p);
            // if there is more than one process
            if (processes.Length > 1)
            {
                MessageBox.Show("        ", "    ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Application.Exit();
            }
            else
            {
                Application.Run(new MainForm());
            }
        }
    }

좋은 웹페이지 즐겨찾기