C# 函数检查程序是否正在运行

// 该C#代码使用.net8 WinForm

using System.Diagnostics;

namespace OnlyOne
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) // 加载窗口执行
        {
            // Process1(); 
            // Process2();
        }

        // 判断当前进程 1
        static void Process1() 
        {
            //获取欲启动进程名
            string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
            ////获取版本号 
            //CommonData.VersionNumber = Application.ProductVersion; 
            //检查进程是否已经启动,已经启动则显示报错信息退出程序。 
            if (System.Diagnostics.Process.GetProcessesByName(strProcessName).Length > 1)
            {
                MessageBox.Show("程序已经运行!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Application.Exit();
                //Application.ExitThread();
                return;
            }

        }

        // 判断当前进程 2
        static void Process2() 
        {
            var selfname = System.AppDomain.CurrentDomain.FriendlyName;  // 获取当前exe名称.
            Process[] processes = Process.GetProcessesByName(selfname);  // 获取进程组是否有该进程, 返回进程数组
            Form1 form = new Form1();
            if (processes.Length == 0)
            {
                form.textBox1.Text = "not runing";
            }
            else
            {
                form.textBox1.Text = "runing";
            }
        }
        
         static void OnlyOne()          // 推荐使用该方法
        {
             bool Exist;                         // 定义一个bool变量, 判断程序是否已在运行
             Mutex mutex = new Mutex(true, "仅一次", out Exist);                          // 创建一个Mutex互斥对象
             if (Exist)
                {                                                                                      
                    mutex.ReleaseMutex();                                            // 如果没有运行
                }
                else
                {
                    MessageBox.Show("仅能运行一次", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Close();
                }
        } 
    }
}

 

posted @   edolf  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
  1. 1 天后 卢卢快闭嘴
  2. 2 珊瑚海 周杰伦&梁心颐
  3. 3 梦返 黄霄云
  4. 4 还可以爱吗 黄霄云
  5. 5 讲不出再见 谭咏麟
  6. 6 飞鸟和蝉 任然
  7. 7 下雨天 南拳妈妈
  8. 8 是你 梦然
  9. 9 一生中最爱 谭咏麟
还可以爱吗 - 黄霄云
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示