【发布时间】:2020-05-27 07:03:35
【问题描述】:
如果不在应用程序中使用全局互斥锁,是否有任何安全的方法来确保系统上只有一个应用程序实例正在运行?我发现在内存中的应用程序生命周期中发生的错误和错误可能会导致系统内出现许多问题,尤其是在与全局互斥锁相匹配的情况下。任何建议将不胜感激。
感谢阅读。
【问题讨论】:
-
@jason.kaisersmith 谢谢你的帖子。我研究了这个解决方案,但似乎这个功能适用于 VB winform 应用程序而不是 c# winform 应用程序。我签入了 VS,并没有看到 c# winform 类型应用程序的选项。不过,我很感谢您的及时回复。任何其他建议将不胜感激。谢谢!
-
有an answer 枚举进程以检查是否已经在运行。如果您不喜欢互斥锁,其他想法是创建具有独占访问权限的文件。但总的来说,使用
try/finally的互斥体(如this answer,其中using确保释放互斥体)就足够了。 -
我并不完全反对使用互斥锁,但我担心如果在我的应用程序生命周期内在内存中发生异常或错误并且应用程序无法从这些错误中恢复,互斥锁可能会使应用程序无响应和/或容易出错,从而使系统处于不良状态,例如未定义状态。 try catch finally 块对于应用程序上的互斥锁来说是理想的吗?为您提供更多详细信息,该应用程序是多线程的,带有系统计时器。感谢您的投入!