一尘不染

阻止.NET中给定应用程序的多个实例?

c#

在.NET中,阻止一个应用程序的多个实例同时运行的最佳方法是什么?而且,如果没有“最佳”技术,则每种解决方案要考虑哪些注意事项?


阅读 241

收藏
2020-05-19

共1个答案

一尘不染

使用Mutex。上面使用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";
2020-05-19