一尘不染

使用Mutex运行应用程序的单个实例

c#

为了只允许一个应用程序实例运行,我使用互斥锁。代码如下。这是正确的方法吗?代码中是否有任何缺陷?

当用户第二次尝试打开应用程序时,如何显示已经运行的应用程序。目前(在下面的代码中),我仅显示一条消息,表明另一个实例已在运行。

    static void Main(string[] args)
    {
        Mutex _mut = null;

        try
        {
            _mut = Mutex.OpenExisting(AppDomain.CurrentDomain.FriendlyName);
        }
        catch
        {
             //handler to be written
        }

        if (_mut == null)
        {
            _mut = new Mutex(false, AppDomain.CurrentDomain.FriendlyName);
        }
        else
        {
            _mut.Close();
            MessageBox.Show("Instance already running");

        }            
    }

阅读 180

收藏
2020-05-19

共1个答案

一尘不染

我曾经这样做过,希望对您有所帮助:

bool createdNew;

Mutex m = new Mutex(true, "myApp", out createdNew);

if (!createdNew)
{
    // myApp is already running...
    MessageBox.Show("myApp is already running!", "Multiple Instances");
    return;
}
2020-05-19