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     }

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

转载于:https://www.cnblogs.com/willingtolove/p/11008804.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值