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

  • 相关阅读:
    Inline Hook 钩子编写技巧
    FPS 游戏实现D3D透视 (API Hook)
    FPS 游戏实现GDI透视 (三角函数)
    X86驱动:恢复SSDT内核钩子
    X86驱动:挂接SSDT内核钩子
    VS2013+WDK8.1 驱动开发环境配置
    C/C++ 语言之反汇编揭秘:目录
    WinRAR 去广告的姿势
    C/C++ 实现反调试的手段
    springboot项目部署到独立tomcat的爬坑集锦
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1760809.html
Copyright © 2011-2022 走看看