zoukankan      html  css  js  c++  java
  • 实现单实例应用程序的三种方案

      实现单实例应用程序的方法比较多,我列举一些常用的方法:
         1,使用互斥体:
      static   void   Main()    
      {  
                bool   isOnlyOne;  
                System.Threading.Mutex   mtx   =   new   System.Threading.Mutex  
                                                                      (false,   "OnlyOne",   out   isOnlyOne);  
                if   (isOnlyOne)  
                {  
                            Application.Run(new   Form1());  
                }

                 else
                 {
                            MessageBox.Show("当前已经运行本应用程序了,无须再次运行!  
      }

         2,使用Process类来检测是否已经存在本应用程序的进程:
       static   void   Main()    
      {  
                bool   isOnlyOne;  
                foreach(process p in Process.GetProcesses())
                {
                           if(p.ProcessName="xxx")
                                 isOnleOne=false;
                 }
                if   (isOnlyOne)  
                {  
                            Application.Run(new   Form1());  
                }

                 else
                 {
                            MessageBox.Show("当前已经运行本应用程序了,无须再次运行!  
      }
    这种方式会导致程序启动缓慢,一般不推荐使用
          3,继承WindowsFormsApplicationBase实现单实例管理器,已经有人写过这个主题了,我就不重复了,具体可以参考:
    http://hi.baidu.com/hetaoos/blog/item/2abda7185ab63a0334fa415f.html

  • 相关阅读:
    [转]责任链模式
    spring中常见注解描述
    [转]外观模式
    [转]策略模式
    分布式事务实践
    SpringBoot入门
    服务器性能调优
    kvm qemu内幕介绍
    xen 保存快照的实现之 —— device model 状态保存
    xen hypercall 的应用层实现
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1760809.html
Copyright © 2011-2022 走看看