防止 C# 应用程序运行多个实例

2023-11-26

我用c#写了一个程序 现在我想知道阻止程序启动(如果它已经在运行)的正确方法是什么?

因此,如果它已经在运行,则双击该程序它将不会启动,因为它已经在运行。

我可以做到这一点,但我正在考虑一个标准且正确的方法。


推荐的方法是使用系统互斥锁。

bool createdNew;
using(var mutex = new System.Threading.Mutex(true, "MyAppName", out createdNew))
{
    if (createdNew)
        // first instance
        Application.Run();
    else
        MessageBox.Show("There is already an instace running");
}

Mutex 构造函数的第一个参数告诉它为此线程创建一个系统范围的互斥体。如果互斥体已经存在它将返回false通过第三个参数。

Update
这个要放在哪里呢? 我会把它放在program.cs中。如果将其放入 form_load 中,则需要在应用程序的生命周期内保留互斥体(将互斥体作为表单上的成员),并在表单卸载中手动释放它。
在其他应用程序打开数据库连接等之前以及为表单/控件等创建资源之前,您越早调用它越好。

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

防止 C# 应用程序运行多个实例 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 带连接的 Codeigniter 活动记录更新语句

    这是我试图通过活动记录实现的查询 UPDATE Customer donations cd join Invoices i on i cd id cd cd id set cd amount 4 cd amount verified 1 W
  • Redis 和查询值

    Redis 在概念上与我使用的传统 SQL 数据库不同 我试图弄清楚它是否适合我的项目 我一直在四处寻找 但似乎找不到我的问题的答案 我需要存储一组用户 每个用户都有一个唯一的 ID 和多个与其关联的值 例如他们的姓名 看来我可以简单地将它
  • linq中如何处理空值?

    recordsList ListOfRecords new StudentRecordsBAL GetStudentsList Select q gt new StudentRecords RollNumber q RollNumber C
  • 如何为具有单个可为空成员的案例类编写 Play JSON 写入转换器

    在 Play 2 3 中 我有一个带有单个可选双成员的案例类 case class SomeClass foo Option Double 我需要一个 JSON 写入转换器来将成员处理为可为空 implicit val someClassW
  • 是否可以使用管道发送 ffmpeg 图像?

    我想将图像作为输入发送到 ffmpeg 并且希望 ffmpeg 将视频输出到流 webRtc 格式 我找到了一些信息 根据我的理解 这表明这是可能的 我相信 ffmpeg 可以从管道接收图像 有谁知道这是如何做到的 我想要发送图像作为输入到
  • Thread.Sleep() 不冻结 UI

    首先 我是初学者C 我想做这个 class2 method 79 null RoomItem 0 num num2 0 false true true System Threading Thread Sleep 250 class2 met
  • Gson 并反序列化其中包含数组的对象数组

    我正在尝试使用 Gson 反序列化从我的 web 服务返回的 json 字符串 该结构将返回为TypeDTO where TypeDTO is like int id String name ArrayList
  • python dict str() 函数可靠地对键进行排序吗?

    在Python中 两个字典 1 1 2 2 3 3 and 3 3 2 2 1 1 产生 1 1 2 2 3 3 str 何时执行 我可以依赖这种排序 或者至少依赖这样一个事实 包含相同键 值对的字典在通过 str 函数时会生成相同的字符串
  • x:Bind 中 ElementName 与 DataTemplates 的替代方案

    使用传统的 Binding 语法时 您可以指定元素名称以指向页面上的特定控件 并能够访问其属性 例如 如果页面名为page你可以这样做 Binding ElementName Page Path Name 随着 x Bind 它说的语法 使
  • 如何解决 WPF 设计器错误“类型 {0} 不支持直接内容”。

    以下 XAML 如下 在资源中定义了一个自定义集合 并尝试使用自定义对象填充它
  • 在 iPhone 应用程序中验证用户身份

    我正在为我们的 Web 应用程序开发 HTTP API 最初 API 的主要使用者将是我们正在开发的 iPhone 应用程序 但我在设计它时考虑到了未来的用途 例如其他平台的移动应用程序 我正在尝试确定对用户进行身份验证的最佳方式 以便他们
  • 如何从每组中选择前 5%?

    我有一个这样的示例表 CREATE TABLE TEMP Category VARCHAR 100 Name VARCHAR 100 INSERT INTO TEMP VALUES A John INSERT INTO TEMP VALUE
  • 在 Azure Functions 中使用 Python 3

    我的目标是让一些 Python 3 代码作为 Azure Functions 运行 但我无法让 Python 3 工作 我意识到 Azure Functions 中的 python 支持仍处于实验阶段 这是我尝试过的 创建一个新的函数应用程
  • Flutter“不要跨异步间隙使用 BuildContext”

    基本上 当用户在对话框中按 注销 时 我想返回到我的登录视图 onSelected value async switch value case MenuAction logout final shouldLogout await showL
  • SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 之间有什么区别?

    有什么区别吗SqlCommand CommandTimeout and SqlConnection ConnectionTimeout在 NET 中 Yes CommandTimeout是单个命令需要多长时间才能完成 ConnectionT
  • Pandas - 按一列分组并聚合其他列以列出

    我有一个数据框 其中有多个用户条目 这些用户还可以分配给多个 ID 我想按用户进行分组 然后将这些 ID 的列表存储在另一列中 如下所示 我想从这里开始 df1 pd DataFrame USER BOB STEVE PAUL KEITH
  • dispatch_set_target_queue如何工作?

    由于缺乏材料dispatch set target queue 我来这里寻求帮助 所以谢谢 这是我的测试代码 dispatch queue t mySerialDispatchQueue1 dispatch queue create com
  • 阻止 Visual Studio 2013 自动删除分配中的多余空格

    我正在尝试对齐一些分配以提高可读性 但每次我粘贴某些内容时 Visual Studio 2013 都会自动删除前面的多余空格 例如 这个 static class Constants public static string Somethi
  • 这些何时加载 DLL:隐式链接 VS 显式链接

    我认为隐式链接会在应用程序启动时立即加载 DLL 因为它也称为 加载时动态链接 但我从这里的链接中发现了下面一些奇怪的解释 https msdn microsoft com en us library 253b8k2c VS 80 aspx
  • 防止 C# 应用程序运行多个实例

    我用c 写了一个程序 现在我想知道阻止程序启动 如果它已经在运行 的正确方法是什么 因此 如果它已经在运行 则双击该程序它将不会启动 因为它已经在运行 我可以做到这一点 但我正在考虑一个标准且正确的方法 推荐的方法是使用系统互斥锁 bool