我用c#写了一个程序
现在我想知道阻止程序启动(如果它已经在运行)的正确方法是什么?
因此,如果它已经在运行,则双击该程序它将不会启动,因为它已经在运行。
我可以做到这一点,但我正在考虑一个标准且正确的方法。
推荐的方法是使用系统互斥锁。
bool createdNew;
using(var mutex = new System.Threading.Mutex(true, "MyAppName", out createdNew))
{
if (createdNew)
// first instance
Application.Run();
else
MessageBox.Show("There is already an instace running");
}
Mutex 构造函数的第一个参数告诉它为此线程创建一个系统范围的互斥体。如果互斥体已经存在它将返回false
通过第三个参数。
Update
这个要放在哪里呢?
我会把它放在program.cs中。如果将其放入 form_load 中,则需要在应用程序的生命周期内保留互斥体(将互斥体作为表单上的成员),并在表单卸载中手动释放它。
在其他应用程序打开数据库连接等之前以及为表单/控件等创建资源之前,您越早调用它越好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)