使用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",五秒钟后,程序自动退出。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3