1、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 }
2、利用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 }
—————————————————————————————————————————————————