我正在创建的应用程序包含一个通知图标,它在后台保持活动状态(好吧,有点)。问题是,当用户点击我的应用程序的图标时,该应用程序将再次启动,因此我在后台有两个通知图标和两个活动以及两个活动。如果用户再次点击该图标,那么将会有三个这样的事情......所以不知怎的,我应该停止这一点。我有点想法设置一个标志并将其值设置为注册表,当我的应用程序想要启动时,在表单加载事件中,通过读取值,终止应用程序。但我想要一种更专业的方式来应对它。例如,根本没有开始。
答案 0 :(得分:1)
创建应用程序创建的某种形式的Global Mutex / Event句柄,然后在打开的例程中检查它是否存在,如果存在,则退出启动路由。
我在这个答案中有一些基本代码(针对不同的问题),但它展示了你要做的事情。
答案 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;
}
}