C# winform 一次只能允许一个应用(使用mutex)

2023-11-07

在很多应用程序开发过程中,需要只允许一个程序实例,即使是通过虚拟桌面方式连接过来的,也是只允许一个人运行。下面是实现该功能的代码,注意mutexName 为系统名称,Global为全局,表示即使通过通过虚拟桌面连接过来,也只是允许运行一次。

using System;
using System.Threading;
using System.Windows.Forms;

namespace WinformOneAppOnce
{
    static class Program
    {
		/// <summary>
		/// mutex互斥锁
		/// </summary>
		private static Mutex mutex = null;
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
			GlobalMutex();
			Application.Run(new Form1());
        }

		private static void GlobalMutex()
		{
			bool createdNew = false;
			系统名称,Global为全局,表示即使通过通过虚拟桌面连接过来,也只是允许运行一次
			string name = "WinformOneAppOnce1";
			try
			{
				mutex = new Mutex(initiallyOwned: false, name, out createdNew);
			}
			catch (Exception ex)
			{
				Console.Write(ex.Message);
				Thread.Sleep(1000);
				Environment.Exit(1);
			}
			if (createdNew)
			{
				Console.WriteLine("程序已启动");
				return;
			}
			MessageBox.Show("另一个窗口已在运行,不能重复运行。");
			Thread.Sleep(1000);
			Environment.Exit(1);
		}

	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# winform 一次只能允许一个应用(使用mutex) 的相关文章

随机推荐

  • 浏览器输入url后发生了什么?

    在浏览器输入url后会发生的过程 1 DNS对域名进行解析 2 建立TCP连接 三次握手 3 发送HTTP请求 4 服务器处理请求 5 返回响应结果 6 关闭TCP连接 四次挥手 7 浏览器解析HTML 8 浏览器布局渲染 1 浏览器对输入
  • Flink流和表的转换

    流 表的转换 1 这种方式后续要进行tableSql的操作 推荐 tableEnv createTemporaryView tableName dataStream 2 这种方式后续要进行tableApi的操作不常用 Table table
  • Linux文件权限管理 chmod 读、写、可执行

    使用 ls l 查看文件权限 左侧第一列 rw r r 这些就是文件的权限信息 文件的权限分为三种 三种权限可相互叠加 最高权限为7 权限 字母 对应的二进制 对应的八进制 读 r 100 4 写 w 010 2 可执行 x 001 1 嗯
  • ajax传参数json对象到后台获取

    var data data name pxxx paramData dataSource a1 table t1 field f1 r name1 01 p name2 02 p 10 100 name2 01 p dataSource a
  • 输入若干个整数,当输入0时表示结束,统计每个输入整数的出现次数。

    描述 输入若干个整数 当输入0时表示结束 统计每个输入整数的出现次数 输入 输入若干个整数 整数之间以空格间隔 当输入0时表示结束 输出 分行输出每个整数出现的次数 行末不能有多余空格 输入示例 11 22 35 68 97 63 22 6
  • 内存分页、进程分页、页表长度

    内存分页 进程分页 页表长度 内存分页 内存空间分成一个个大小相等的分区 页框号或物理块号从0开始 每一个分区称作页框 一般大小为 4KB 进程分页 将用户进程的地址空间分为与页框大小相等的一个个区域 页号一般从0开始 每一个分区称作页 一
  • 设计模式:装饰者模式

    定义 动态给一个对象添加一些额外的职责 就象在墙上刷油漆 使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活 设计初衷 通常可以使用继承来实现功能的拓展 如果这些需要拓展的功能的种类很繁多 那么势必生成很多子类 增加系统
  • Latex写文章时插入单栏图片和双栏图片方法

    环境 WinEdt7 0 前言 使用latex写文章 经常需要插入图片 有时插入的图片需要单栏排版 有时插入的图片需要双栏排版 下面汇总单双栏图片插入方法 1 单栏图片 插入单栏图片很简单 许多文章的latex模板里面都有例子 即以下代码
  • 【09】Nginx之缓存集成

    Nginx缓存集成 缓存的概念 缓存就是数据交换的缓冲区 称作 Cache 当用户要获取数据的时候 会先从缓存中去查询获取数据 如果缓存中有就会直接返回给用户 如果缓存中没有 则会发请求从服务器重新查询数据 将数据返回给用户的同时将数据放入
  • html5 try upgrading your browser,用html5做flex的离线应用程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 HTML5 草案的前身名为 Web Application 1 0 HTML5 的目标是保持和当前 HTML 标准 HTM L4 01 以及 HTML 的 XML 版本 XHMTL1 0 向后兼
  • Javase学习必备工具,超详细的OneNote安装使用教程

    为什么要记笔记 方便回顾复习 Java的技术体系庞大 并且每天都有新内容 为了防止遗忘 建议制定有规律的复习计划 笔记是回顾复习的依据 课下自己写的练习代码应该是尝试推翻这些课堂上记录的重点结论 笔记是重要结论的集中地 记笔记在学习中起到很
  • flutter入门自定义实现PopupWindow功能

    https blog csdn net email jade article details 87922051 其实就是自定义一个weight 实现 poproute 构建一个子布局传入即可 1功能显示和隐藏 用自定义的view 2 具体操
  • Qt 5.9.6 下载及安装

    1 下载并安装 Qt 5 9 6 官网下载地址 http download qt io archive qt 5 9 5 9 6 qt opensource windows x86 5 9 6 exe 下载后安装 安装路径不能有中文字符及空
  • node读取文件转换json文件

    323 text h323 3gp video 3gpp aab application x authoware bin aam application x authoware map aas application x authoware
  • 记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程

    一句废话 这次换一种写作风格 尝试一下轻松的行文方式 起因 很久以前看见有群友讨论关于docker部署Redroid 拿来挂机玩游戏一类的 当时听了感觉很有意思 后面粗浅地在zero2上部署了一下 容器虽然是跑起来了 但是scrcpy连接总
  • istio流量管理

    istio 官方示例 bookinfo 配置sidecar注入 istioctl kube inject debug f samples bookinfo kube bookinfo yaml gt bookinfo2 yaml 使用kub
  • 浅谈QNX进程间通信(IPC)

    锋影 e mail 174176320 qq com 在QNX Neutrino中消息传递 Message passing 是IPC的主要形式 其他的姓氏也是基于消息传递实现的 QNX中提供的IPC形式如何下图所示 一 Synchronou
  • 基础13:惰函数

    有两种实现惰性载入的方式 第一种事函数在第一次调用时 对函数本身进行二次处理 该函数会被覆盖为符合分支条件的函数 这样对原函数的调用就不用再经过执行的分支了 我们可以用下面的方式使用惰性载入重写addEvent function addEv
  • python语言是一种面向过程的语言_浅谈编程语言中的面向过程和面向对象

    最近一直在自学Python 在 Python学习手册 的开篇有一句话 Python可以定义为面向对象的脚本语言 这句话让我十分困惑 并且在之后的一周里面让我总是混淆一些概念 到底什么是 面向对象 到底什么是 对象 带着这个疑问 我继续向下学
  • C# winform 一次只能允许一个应用(使用mutex)

    在很多应用程序开发过程中 需要只允许一个程序实例 即使是通过虚拟桌面方式连接过来的 也是只允许一个人运行 下面是实现该功能的代码 注意mutexName 为系统名称 Global为全局 表示即使通过通过虚拟桌面连接过来 也只是允许运行一次