• 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     }

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

  • 相关阅读:
    树状数组进阶
    洛谷 P2824 [HEOI2016/TJOI2016]排序
    抽象类
    关于getClass()和instanceof的区别与联系
    Java中的强制类型转换
    Java中的内联
    Java关键字之final
    Java中的"is-a"规则
    关于虚方法
    Java中的动态绑定
  • 原文地址:https://www.cnblogs.com/willingtolove/p/11008804.html
Copyright © 2020-2023  润新知