zoukankan      html  css  js  c++  java
  • c# WinFo判断当前程序是否已经启动或存在的几种方式

    第一种方式:利用Mutex互斥量实现同时只有一个进程实例在运行

      

     static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
     static void Main()
            {
                
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //控制当前程序已经打开(即启动)
                //方式1:利用Mutex互斥量实现同时只有一个进程实例在运行
                //互斥锁(Mutex)
                //互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。 
                //互斥锁可适用于一个共享资源每次只能被一个线程访问的情况
                bool flag = false;
                System.Threading.Mutex hMutex = new System.Threading.Mutex(true, Application.ProductName, out flag);
                bool b = hMutex.WaitOne(0, false);
                /*上面的参数说明:
                 第一个参数【initiallyOwned】:true:指示调用线程是否应具有互斥体的初始所有权 (老实说没理解透)
                 第二个参数【name】:程序唯一name,(当前操作系统中)判定重复运行的标志 
                 第三个参数【createdNew】:返回值,如果检测到已经启动则返回(false)。 
                 */
                if (flag)
                {
                    //没有启动相同的程序
                    Application.Run(new MainForm());
                }
                else
                {
                    MessageBox.Show("当前程序已在运行,请勿重复运行。");
                    Environment.Exit(1);//退出程序  
                } 
            }
    }
    

      

  • 相关阅读:
    下载MATLAB硬件支持包的方法
    chromium 编译源码里面的单一模块 测试用例
    cc/animation
    raster 像素化
    Property Trees & DispalyItem
    Charles的HTTPS抓包
    git 修改.gitignore后未生效
    Word2Vec原理详解
    Pytorch中的Embedding
    在mac m1上安装tensorflow报错“zsh: illegal hardware instruction”
  • 原文地址:https://www.cnblogs.com/LoveTX/p/8684385.html
Copyright © 2011-2022 走看看