我正在创建的应用程序包含一个通知图标,它在后台保持活跃(嗯,有点)。问题是当用户点击我的应用程序的图标时,应用程序将再次启动,所以我有两个通知图标和两个后台活动以及两个所有内容。如果用户再次单击该图标,将出现所有这些内容中的三个......所以我应该以某种方式阻止它。我有一种设置标志并将其值设置为注册表的想法,当我的应用程序想要启动时,在表单加载事件中,通过读取值来终止应用程序。但我想要一种更……专业的方式来处理它。例如根本没有启动。
问问题
171 次
2 回答
1
创建您的应用程序创建的某种形式的全局互斥/事件句柄,然后在打开的例程中检查它是否存在,如果存在,则退出启动路由。
在我给出的这个答案中,我有一些基本代码(针对不同的问题),但它演示了您正在尝试做什么。
于 2013-03-03T14:07:58.487 回答
1
这是来自这个答案,这是这个答案的副本。您在应用程序的入口构造函数中检查应用程序是否已经在运行。
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;
}
}
于 2013-03-03T14:13:20.530 回答