C# 桌面程序只允许运行一个主界面

时间:2024-03-20 16:09:39

问题:winform程序,如果不另加处理的话,每次双击生成的exe文件都会运行。如图:

C# 桌面程序只允许运行一个主界面

以前没做过处理,就是这样的问题。

解决办法:修改Program.cs文件

C# 桌面程序只允许运行一个主界面

修改如下:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;

namespace ScreenCutter
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            #region 方式一判断进程法
            //Process current = Process.GetCurrentProcess();
            //Process[] processes = Process.GetProcessesByName(current.ProcessName);
            //foreach (Process process in processes)
            //{
            //    if (process.Id != current.Id)
            //    {
            //        if (process.MainModule.FileName== current.MainModule.FileName)
            //        {
            //            MessageBox.Show("程序已经运行!", Application.ProductName,MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            //            return;
            //        }
            //    }
            //}
            #endregion
            #region 方式二创建互斥法
            //bool IsRunning;
            //Mutex mutexApp = new Mutex(false, Assembly.GetExecutingAssembly().FullName, out IsRunning);
            //if (!IsRunning)
            //{
            //    MessageBox.Show("程序已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            //    return;
            //}
            #endregion
            #region 方式三保证同时只有一个客户端在运行
            //Mutex mutexApp = new Mutex(false, "ScreenCutter.exe");
            //if (!mutexApp.WaitOne(100,false))
            //{
            //    MessageBox.Show("程序已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            //    return;
            //}
            #endregion
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
           
        }
    }
}

有三种办法,,,,都可以起到作用