美文网首页
C#限制程序启动一个

C#限制程序启动一个

作者: 小羊爱学习 | 来源:发表于2024-08-19 16:48 被阅读0次

WinForm

WinForm下我们用互斥锁来解决

    internal static class Program
    {
        // 互斥锁名字
        private const string UniqueMutexName = "YuZhi.winformlearnmanager.Mutex";
        // 全局的互斥锁变量  
        private static Mutex mutex;
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // 尝试获取互斥锁  
            mutex = new Mutex(true, UniqueMutexName, out bool createdNew);
            // 如果互斥锁已经存在(即另一个实例在运行)  
            if (!createdNew)
            {
                Application.Exit();
                return;
            }

            // 互斥锁是新创建的(即没有其他实例在运行),继续执行程序  
            Application.Run(new FrmLidarSetting());

            // 确保在应用程序退出时释放互斥锁  
            mutex.ReleaseMutex();
            mutex.Close();
        }
    }

使用using方式

internal static class Program
{
    // 互斥锁名字
    private const string UniqueMutexName = "JSC.jsclearn.Mutex";
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
        using (var mutex = new Mutex(true, UniqueMutexName, out bool createdNew))
        {
            if (createdNew)
            {
                // 运行应用程序
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                // 释放互斥锁
                mutex.ReleaseMutex();
                mutex.Close();
            }
            else
            {
                // 已经有一个实例在运行,不启动第二个实例
                MessageBox.Show("应用程序已经在运行。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Application.Exit(); // 退出当前实例
            }
        }
    }
}

WPF

WPF中更简单了

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            Process[] p = Process.GetProcessesByName("CAATS_Client");
            if (p.Length > 1)
            {
                Application.Current.Shutdown();
                return;
            }
            HomeWin win = new HomeWin();
            // Show the window  
            win.Show();
        }

相关文章

  • C#笔记,C#和C之间交互,非托管代码

    c# 开机启动配置windows 程序开机启动配置在注册表HKEY_CURRENT_USER\Software\M...

  • C#启动外部程序的几种常用方法汇总

    C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1、启动外部程序,不等待其退出。 2、启...

  • 码农周刊分类整理 -- C

    C# C# 程序设计(上) 开源一个社交网站模拟登录的库(C#) (@ziyunhx) 针对 Java 程序员的 ...

  • Taro 小程序分包

    微信小程序限制了代码包不能超过 2MB,限制大小是对小程序启动速度的考虑,但是2MB 大小严重限制了小程序功能的扩...

  • C#程序入口的static Main方法为什么要加上Static

    c#程序刚开始启动的时候都会有唯一一个入口函数main()函数,而非静态成员又称实例成员,必须作用于实例。在程序刚...

  • c# 笔记

    c#程序刚开始启动的时候都会有唯一一个入口函数main()函数,而非静态成员又称实例成员,必须作用于实例。在程序刚...

  • C# 限制应用程序只能启动一次

    原理是 启动应用程序后 创建互斥锁 当再启动应用程序后 互斥锁已经存在 就会再次创建失败 就说明 程序启动过 互斥...

  • uni-app之微信小程序分包

    因小程序有体积和资源加载限制,各家小程序平台提供了分包方式,优化小程序的下载和启动速度。所谓的主包,即放置默认启动...

  • 小程序分包(Taro分包案例)

    为什么要使用小程序的“分包加载”方案 微信小程序限制了代码包不能超过 2MB,限制大小是对小程序启动速度的考虑,但...

  • 第二章 程序结构

    C# 中的关键组织结构概念包括程序、命名空间、类型、成员和程序集。 C# 程序由一个或多个源文件组成。 程序声明类...

网友评论

      本文标题:C#限制程序启动一个

      本文链接:https://www.haomeiwen.com/subject/ggwmkjtx.html