gpt4 book ai didi

c# - 使用 Mutex 来防止同一程序的多个实例安全运行吗?

转载 作者:IT王子 更新时间:2023-10-29 03:53:31 25 4
gpt4 key购买 nike

我正在使用此代码来防止我的程序的第二个实例同时运行,它安全吗?

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

我担心如果某事抛出异常并且应用程序崩溃,则 Mutex 仍将被保留。是真的吗?

最佳答案

为此目的使用 Windows 事件更为常见和方便。例如

static EventWaitHandle s_event ;

bool created ;
s_event = new EventWaitHandle (false,
EventResetMode.ManualReset, "my program#startup", out created) ;
if (created) Launch () ;
else Exit () ;

当您的进程退出或终止时,Windows 将为您关闭该事件,如果没有打开的句柄,则将其销毁。

已添加:要管理 session ,请为事件(或互斥量)名称使用Local\Global\ 前缀。如果您的应用程序是针对每个用户的,只需将经过适当修改的登录用户名附加到事件名称即可。

关于c# - 使用 Mutex 来防止同一程序的多个实例安全运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com