在里面NET,防止一个应用程序的多个实例同时运行的最佳方法是什么?如果没有"最好"的技术,那么每一个解决方案需要考虑哪些注意事项呢?

推荐答案

使用互斥.上面使用GetProcessByName的一个例子有很多警告.以下是一篇关于这个主题的好文章:

http://odetocode.com/Blogs/scott/archive/2004/08/20/401.aspx

[STAThread]
static void Main() 
{
   using(Mutex mutex = new Mutex(false, "Global\\" + appGuid))
   {
      if(!mutex.WaitOne(0, false))
      {
         MessageBox.Show("Instance already running");
         return;
      }

      Application.Run(new Form1());
   }
}

private static string appGuid = "c0a76b5a-12ab-45c5-b9d9-d693faa6e7b9";

.net相关问答推荐

Long.MaxValue从Single到Long的转换导致溢出异常

ZstdNet库的问题:Src大小不正确,异常

带有ASP.NET核心的Angular 项目模板.API试验

保存时不保留 XML 格式

如果只有一个 : 存在于字符串中,则提取冒号后的内容

防止在 .NET 上构建路径中的反斜杠以进行跨平台部署

无法解析此引用.找不到程序集

如何在 ASP.NET Core MVC 中读取操作方法的属性?

DbContext 丢弃更改而不释放

为什么 Any() 不适用于 c# null 对象

如何在 EF 代码优先中禁用链接表的级联删除?

如何在 C# 中创建 Word 文档?

如何比较 C# 中的(目录)路径?

如何禁用 Alt + F4 关闭表单?

如何在 RabbitMQ 中设置重试次数?

如何在 nuspec 中指定特定的依赖版本?

DataContractSerializer vs XmlSerializer:每个序列化器的优缺点

使用 LINQ 搜索树

带有嵌套控件的设计模式

在类型 c# 上切换大小写