Resumen de métodos para evitar múltiples aperturas del programa C# WinForm

1. Cuando se inicie Winform, compruebe si existe el mismo nombre de proceso para evitar que se abran varios programas,
método 1:

static class Program
    {
    
    
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
    
    
            Process[] processes = Process.GetProcesses();
            Process currentProcess = Process.GetCurrentProcess();
            bool processExist = false;
            foreach (Process p in processes)
            {
    
    
                if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id)
                {
    
    
                    processExist = true;
                }
            }

            if (processExist)
            {
    
    
                Application.Exit();
            }
            else
            {
    
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }

Método 2:

static class Program
    {
    
    
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
    
    
            string processName = Process.GetCurrentProcess().ProcessName;
            Process[] processes = Process.GetProcessesByName(processName);
            //如果该数组长度大于1,说明多次运行
            if (processes.Length > 1)
            {
    
    
                MessageBox.Show("程序已运行,不能再次打开!");
                Environment.Exit(1);
            }
            else
            {
    
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }

2. Use el objeto de exclusión mutua Mutex para evitar que el programa se abra más;

static class Program
    {
    
    
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
    
    
            bool isAppRunning = false;
            Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning);
            if (!isAppRunning)
            {
    
    
                MessageBox.Show("程序已运行,不能再次打开!");
                Environment.Exit(1);
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

Supongo que te gusta

Origin blog.csdn.net/weixin_45499836/article/details/126568057
Recomendado
Clasificación