C# Winform程序防止多开的方法总结(亲测)

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     }

—————————————————————————————————————————————————

posted @ 2019-06-12 12:01  willingtolove  阅读(6237)  评论(0编辑  收藏  举报