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 }