• C# 判断程序是否已经在运行


     方式1:

      /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                //获取欲启动进程名
                string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
                ////获取版本号 
                //CommonData.VersionNumber = Application.ProductVersion; 
                //检查进程是否已经启动,已经启动则显示报错信息退出程序。 
                if (System.Diagnostics.Process.GetProcessesByName(strProcessName).Length > 1)
                {
    
                    MessageBox.Show("CtiAgentClient呼叫中心客户端已经运行!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    Application.Exit();
                    return;
                }
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new frmMain());
            }

     方式2:

    第一种方式:利用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);//退出程序 
                }
            }
    }
  • 相关阅读:
    Java设计模式知识整理
    Java单例实现及分析
    Java开源框架知识整理
    JavaJ2EE相关知识整理
    数据库相关知识整理
    JavaJDK8新特性相关知识整理
    Java并发编程相关知识整理
    Java集合框架相关知识整理
    Java虚拟机JVM相关知识整理
    若依项目利用nginx实现负载均衡及保持会话
  • 原文地址:https://www.cnblogs.com/aijiao/p/10195879.html
Copyright © 2020-2023  润新知