一、Winform啓動的時候,檢測是否存在一樣的進程名,防止程序多開;
1 static class Program 2 { 3 /// <summary> 4 /// 應用程序的主入口點。 5 /// </summary> 6 [STAThread] 7 static void Main() 8 { 9 Process[] processes = Process.GetProcesses(); 10 Process currentProcess = Process.GetCurrentProcess(); 11 bool processExist = false; 12 foreach (Process p in processes) 13 { 14 if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id) 15 { 16 processExist = true; 17 } 18 } 19 20 if (processExist) 21 { 22 Application.Exit(); 23 } 24 else 25 { 26 Application.EnableVisualStyles(); 27 Application.SetCompatibleTextRenderingDefault(false); 28 Application.Run(new Form1()); 29 } 30 } 31 }
1 static class Program 2 { 3 /// <summary> 4 /// 應用程序的主入口點。 5 /// </summary> 6 [STAThread] 7 static void Main() 8 { 9 string processName = Process.GetCurrentProcess().ProcessName; 10 Process[] processes = Process.GetProcessesByName(processName); 11 //若是該數組長度大於1,說明屢次運行 12 if (processes.Length > 1) 13 { 14 MessageBox.Show("程序已運行,不能再次打開!"); 15 Environment.Exit(1); 16 } 17 else 18 { 19 Application.EnableVisualStyles(); 20 Application.SetCompatibleTextRenderingDefault(false); 21 Application.Run(new Form1()); 22 } 23 } 24 }
二、利用Mutex互斥對象防止程序多開;
1 static class Program 2 { 3 /// <summary> 4 /// 應用程序的主入口點。 5 /// </summary> 6 [STAThread] 7 static void Main() 8 { 9 bool isAppRunning = false; 10 Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning); 11 if (!isAppRunning) 12 { 13 MessageBox.Show("程序已運行,不能再次打開!"); 14 Environment.Exit(1); 15 } 16 Application.EnableVisualStyles(); 17 Application.SetCompatibleTextRenderingDefault(false); 18 Application.Run(new Form1()); 19 } 20 }
—————————————————————————————————————————————————數組