为什么发布模式下的单实例逻辑失败?

时间:2017-09-14 07:33:39

标签: c# wpf

这是我的代码 我在调试模式下尝试过。有用。 虽然在发布时不是为什么?它是一个WPF应用程序

我在Main方法中输入的这段代码用于检查应用程序是否正在运行。我希望单个实例只能运行。我只从Stack Overflow复制了这段代码。

[STAThread]
static void Main()
{
    const string MutexName = "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}";
    try
    {
        Mutex mutex = new Mutex(true, MutexName);

        if (mutex.WaitOne(TimeSpan.Zero, true))
        {
            mutex.ReleaseMutex();
            //Here Application logic
        }
        else
        {
            MessageBox.Show("Application is alreadey running.");
            Environment.Exit(1);
        }
    }
    catch
    {
        Environment.Exit(1);
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道具体原因。但这种修改工作

    [STAThread]
    static void Main()
    {

        const string MutexName = "8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F";
        try
        {

            Mutex mutex;

            if (!Mutex.TryOpenExisting(MutexName, out mutex))
            {
                mutex = new Mutex(true,MutexName);
                var app = new App();
                app.Run();
            }
            else
            {

                Environment.Exit(1);
            }
        }
        catch
        {
            Environment.Exit(1);
        }

    }