如何阻止我的应用程序反复启动

时间:2013-03-03 14:02:19

标签: c# notifyicon

我正在创建的应用程序包含一个通知图标,它在后台保持活动状态(好吧,有点)。问题是,当用户点击我的应用程序的图标时,该应用程序将再次启动,因此我在后台有两个通知图标和两个活动以及两个活动。如果用户再次点击该图标,那么将会有三个这样的事情......所以不知怎的,我应该停止这一点。我有点想法设置一个标志并将其值设置为注册表,当我的应用程序想要启动时,在表单加载事件中,通过读取值,终止应用程序。但我想要一种更专业的方式来应对它。例如,根本没有开始。

2 个答案:

答案 0 :(得分:1)

创建应用程序创建的某种形式的Global Mutex / Event句柄,然后在打开的例程中检查它是否存在,如果存在,则退出启动路由。

我在这个答案中有一些基本代码(针对不同的问题),但它展示了你要做的事情。

UnauthorizedAccessException on Openexisting global mutex

答案 1 :(得分:1)

来自this,这是this一个副本。您在应用程序的条目构造函数中检查应用程序是否已在运行。

static void Main() 
{
    Process currentProcess = Process.GetCurrentProcess();
    var runningProcess = (from process in Process.GetProcesses()
                          where
                            process.Id != currentProcess.Id &&
                            process.ProcessName.Equals(
                              currentProcess.ProcessName,
                              StringComparison.Ordinal)
                          select process).FirstOrDefault();
    if (runningProcess != null)
    {
        ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
       return; 
    }
}