65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 中的单实例应用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.87/5 (105投票s)

2003年6月29日

CPOL

1分钟阅读

viewsIcon

611840

downloadIcon

20091

一篇文章,演示了如何在应用程序启动时检测是否已经有另一个实例在运行,如果是,则激活之前的实例。

Sample screenshot

引言

应用程序的单实例意味着在启动时,应用程序能够识别是否已经有自身的另一个实例在运行。在这种情况下,新的应用程序将停止执行。通常,对于基于窗体的应用程序,如果应用程序已经运行,新的实例会激活(将应用程序窗口带到前台)之前的实例。

使用代码

要创建一个单实例应用程序,请将文件 SingleApplication.cs 添加到您的项目中。它添加了一个名为 SingleApplication 的新类,该类定义在 SingleInstance 命名空间中,并将以下代码添加到您的启动代码中

static void Main() 
{
   SingleInstance.SingleApplication.Run(new FrmMain());
}

FrmMain 是主窗体类名。Run 方法如果已经有其他实例在运行,则返回 false。对于基于控制台的应用程序,请在不带任何参数的情况下调用 Run( ) 并检查返回值,如果为 true,则可以执行您的应用程序。

与控制台应用程序一起使用

static void Main() 
{
   if(SingleInstance.SingleApplication.Run() == false)
   {
      return;
   }
   //Write your program logic here
}

历史

  • 2003 年 6 月 29 日 - 文章的初始发布。
  • 2003 年 7 月 1 日 - 添加了互斥锁支持。
  • 2004 年 12 月 11 日 - 根据用户反馈改进了性能,特别感谢 Mach005。
  • 2018 年 6 月 7 日 - 上传了 VS2015 项目。
© . All rights reserved.