相关疑难解决方法(0)

是否使用Mutex来防止同一程序的多个实例运行安全?

我正在使用此代码阻止我的程序的第二个实例同时运行,是否安全?

Mutex appSingleton = new System.Threading.Mutex(false, "MyAppSingleInstnceMutx");
if (appSingleton.WaitOne(0, false)) {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new MainForm());
    appSingleton.Close();
} else {
    MessageBox.Show("Sorry, only one instance of MyApp is allowed.");
}
Run Code Online (Sandbox Code Playgroud)

我担心如果有什么东西抛出一个异常并且应用程序崩溃了Mutex仍然会被保留.真的吗?

c# mutex single-instance winforms

45
推荐指数
4
解决办法
5万
查看次数

从ApplicationContext退出应用程序

我有一个自定义的ApplicationContext,我试图在满足特定条件时终止它.我使用Mutex来确保单个实例.

我试过了base.OnMainFormClosed(null, null);.Application.Exit()ExitThread.一切都停止处理,但进程本身仍在运行.

完整的Main()方法:

static void Main()
    {
        bool firstInstance;
        using (Mutex mutex = new Mutex(true,
                                   @"Global\MyApplication",
                                   out firstInstance))
        {
            if (!firstInstance)
            {
                MessageBox.Show("Another instance is already running.");
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new CustomContext());
        }
    }
Run Code Online (Sandbox Code Playgroud)

什么是正确的技术?

.net c#

5
推荐指数
1
解决办法
6493
查看次数

标签 统计

c# ×2

.net ×1

mutex ×1

single-instance ×1

winforms ×1