当前位置: 首页 > news >正文

C# 确保程序只有一个实例运行

常规需求 C#程序只能运行一次,不能多开:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Security.Principal;
namespace BallLocation
{
    static class Program
    {
        [STAThread]
        static void Main()
        { 
            bool createNew;
            using (Mutex mutex = new Mutex(true, Application.ProductName, out createNew))
            {
                if (createNew)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                    //这里是 winform的入口
				}
				 else
                {
                    MessageBox.Show("程序已经在运行,请不要重复打开!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
			}	
		}
	}
}

            //使用System.Threading.Mutex来确保程序只有一个实例运行
            //Application.ProductName可能不是最佳选择,因为它依赖于Application类的初始化
            //建议使用一个固定的字符串作为互斥体名称

		   bool createNew;
		   using (Mutex mutex = new Mutex(true, "Global\\BallLocationMutex", out createNew))
           {
               if (createNew)
               {
                   Application.EnableVisualStyles();
                   Application.SetCompatibleTextRenderingDefault(false);
                   Application.Run(new MainForm());
               }
               else
               {
                   // 如果程序已经在运行,提示用户
                   MessageBox.Show("程序已经在运行,请不要重复打开!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
               }
           }
//----------
string currentDirectory = Environment.CurrentDirectory;
Console.WriteLine("当前工作目录: " + currentDirectory);

相关文章:

  • 如何确保邮件内容符合不同地区用户的文化习惯
  • 原子性(Atomicity)和一致性(Consistency)的区别?
  • 【备份】php项目处理跨域请求踩坑
  • 【JavaSE-2】数据类型与变量
  • Jmeter接口自动化测试读取用例
  • 快速理解Spring 和 Spring Boot 的核心区别
  • 易错点abc
  • 【前端】简单原生实例合集html,css,js
  • 【芯片设计】NPU芯片前端设计工程师面试记录·20250227
  • 什么是GPU
  • DeepSeek-R1自写CUDA内核跑分屠榜:开启GPU编程自动化新时代
  • 【Python爬虫(96)】从0到1:打造爬虫驱动的数据分析平台
  • 【AI气象强短强3】基于双偏振雷达变量垂直廓线特征的短时强降水和雷暴大风短时临近预报方法
  • 分布式Session
  • 深度学习在自动驾驶车辆车道检测中的应用
  • 提升 Spring Boot 系统性能:高效处理实时数据流的 BufferTrigger 使用详解
  • 从零开始自主「起身站立」,上海AI Lab发布最新控制算法,机器人:起猛了
  • TCP协议工作原理详细介绍(形象举例版)
  • 【读书笔记·VLSI电路设计方法解密】问题56:一种设计的门数是多少
  • 如何使用useEffect模拟组件的生命周期?
  • 《风林火山》千呼万唤始出来,戛纳首映后口碑崩盘?
  • 光速晋级!2025年多哈世乒赛孙颖莎4比0战胜对手
  • 幼儿园教师拍打孩子额头,新疆库尔勒教育局:涉事教师已被辞退
  • 广西等地旱情缓解,水利部针对甘肃启动干旱防御Ⅳ级响应
  • 哲学新书联合书单|远离苏格拉底
  • 对话郑永年:我们谈判也是为世界争公义