C# Winform程序防止多開的方法總結(親測)

一、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     }

—————————————————————————————————————————————————數組

相關文章
相關標籤/搜索