限制应用程序的多个实例

Llo*_*ell 12 .net c# multiple-instances c#-2.0

好的,所以我创建了我的c#应用程序,为它创建了一个安装程序,并在我的机器上安装了它.

问题是,当用户打开应用程序exe两次时,将运行两个应用程序实例.我只想要一个应用程序的一个实例随时运行,我该怎么做呢?

谢谢你的帮助,

Ant*_*lev 9

常见的技术是创建一个命名Mutex并检查它在应用程序启动时的存在.

看到这个这个.

DDJ的代码:

class App : Form
{
    Mutex mutex;

    App()
    {
        Text = "Single Instance!";
        mutex = new Mutex(false, "SINGLE_INSTANCE_MUTEX");
        if (!mutex.WaitOne(0, false)) 
        {
            mutex.Close();
            mutex = null;
        }
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
            mutex.ReleaseMutex();
        base.Dispose(disposing);
    }

    static void Main()
    {
        App app = new App();
        if (app.mutex != null) Application.Run(app);
        else MessageBox.Show("Instance already running");
    }
}
Run Code Online (Sandbox Code Playgroud)


nWo*_*orx 8

我解决了这个问题

[STAThread]
 static void Main()
    {

        Process[] result = Process.GetProcessesByName("ApplicationName");
        if (result.Length > 1)
        {
            MessageBox.Show("There is already a instance running.", "Information");
            System.Environment.Exit(0);
        }
        // here normal start 
    }
Run Code Online (Sandbox Code Playgroud)

这很简单,但我没有时间检查更好的解决方案.