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

标签 c# mutex

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

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

    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");

        }            
    }

最佳答案

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

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;
}

关于c# - 使用 Mutex 运行应用程序的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/819773/

相关文章:

c# - C# 程序员更好的网络抓取选项(HTMLAgilityPack 或 Python+beautifulsoup)

c# - 如何在 Unity3D 上为 android 显示 Google Play 游戏 "Welcome Back"toast?

c# - <MailDefinition> 和 <%%> 占位符

c - C 中基本互斥体导致程序锁定

c++ - 使用正在进行的函数调用销毁对象

c# - 分析一个用 C++ 编码的 OpenGL 2.0 游戏,入口项目在 C# 中,所有这些都在 visual studio 2010 中?

c# - 处理密码和配置文件的最佳实践是什么?

c++ - 为什么此代码不会导致死锁?

mutex - 互斥问题

c - for(;;)是什么样的循环?