使用mutex实现应用程序单实例运行代码分享

 更新时间:2014年01月06日 10:29:51   作者:  
本文主要介绍了使用Mutex实现应用程序单实例运行的方法,实现原理是在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序

System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权。
实现原理: 在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序。
测试代码:

复制代码 代码如下:

class Test
     {
         /// <summary>
         /// 应用程序的主入口点。
         /// </summary>
          [STAThread]
         static void Main(string[] args)
         {
              bool flag=false;
              System.Threading.Mutex mutex=new System.Threading.Mutex(true,"Test",out flag);
              //第一个参数:true--给调用线程赋予互斥体的初始所属权
              //第一个参数:互斥体的名称
              //第三个参数:返回值,如果调用线程已被授予互斥体的初始所属权,则返回true
              if(flag)
              {
                   Console.Write("Running");
              }
              else
              {
                   Console.Write("Another is Running");
                   System.Threading.Thread.Sleep(5000);//线程挂起5秒钟
                   Environment.Exit(1);//退出程序
              }
              Console.ReadLine();
         }

运行结果:
第一次运行,输出"Running"。
不关闭第一次运行的程序, 进行第二次运行,输出"Another is Running",五秒钟后,程序自动退出。

相关文章

  • C#递归读取XML菜单数据的方法

    C#递归读取XML菜单数据的方法

    这篇文章主要介绍了C#递归读取XML菜单数据的方法,涉及递归的操作技巧与C#窗体的用法,对于进行C#项目开发具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • Unity3D实现控制摄像机移动

    Unity3D实现控制摄像机移动

    这篇文章主要为大家详细介绍了Unity3D实现控制摄像机移动 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • DevExpress GridView自动滚动效果

    DevExpress GridView自动滚动效果

    这篇文章主要为大家详细介绍了DevExpress GridView自动滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#获取客户端相关信息实例总结

    C#获取客户端相关信息实例总结

    这篇文章主要介绍了C#获取客户端相关信息的方法,以实例形式总结了C#获取客户端IP地址、网络连接、硬件信息等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#反射在实际应用中的实例代码

    C#反射在实际应用中的实例代码

    C#反射在实际应用中的实例代码,需要的朋友可以参考一下
    2013-03-03
  • 如何给C#变量取名字

    如何给C#变量取名字

    本文主要介绍了如何给C#变量取名字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 用C#在本地创建一个Windows帐户(DOS命令)

    用C#在本地创建一个Windows帐户(DOS命令)

    用C#在本地创建一个Windows帐户(DOS命令)...
    2007-03-03
  • C#中Dictionary与List的用法区别以及联系详解

    C#中Dictionary与List的用法区别以及联系详解

    List和Dictionary想必是我们平常用到最多的C#容器了,他们使用起来都很简单,这篇文章主要给大家介绍了关于C#中Dictionary与List的用法区别以及联系的相关资料,需要的朋友可以参考下
    2023-11-11
  • 详解搭建基于C#和Appium的Android自动测试环境

    详解搭建基于C#和Appium的Android自动测试环境

    如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使用的人多,资料丰富,支持语言多Jave,Python,C#,Ruby,PHP,碰见问题也容易得到帮助。
    2021-05-05
  • Winform让DataGridView左侧显示图片

    Winform让DataGridView左侧显示图片

    本文主要介绍在如何让DataGridView左侧显示图片,这里主要讲解重写DataGridView的OnRowPostPaint方法,需要的朋友可以参考下。
    2016-05-05

最新评论