加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

防止c#应用程序运行多个实例

发布时间:2020-12-15 18:25:14 所属栏目:百科 来源:网络整理
导读:我用c#写了一个程序 现在我想知道如果程序已经运行,阻止程序启动的正确方法是什么? 因此,如果它已经在运行,并且双击该程序,它将无法启动,因为它已经在运行. 我可以这样做,但我正在考虑一种标准和正确的方式. 解决方法 建议的方法是使用系统互斥锁. bool cre
我用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 ctor的第一个参数告诉它为该线程创建一个系统范围的互斥锁.如果互斥锁已经存在,它将通过第3个参数返回false.

更新把它放在哪里?我把它放在program.cs中.如果将其放在form_load中,则需要在应用程序的生命周期内保留互斥锁(将互斥锁作为表单上的成员),然后以卸载形式手动释放它.在其他应用程序打开数据库连接等之前以及为表单/控件等创建资源之前,您越早调用它越好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读