我写了一个小的WPF应用程序,当“关闭”“关闭”将系统托盘(客户需求)最小化时。双击弹出,或右键单击给出上下文菜单以退出。

但是,如果将应用程序最小化,并且用户导航到start-> alling程序 - >应用程序启动了新实例。

如果用户执行此操作而不是启动新实例,我需要做什么(在C#中)来获取该应用程序以最大化运行实例?

谢谢!

有帮助吗?

解决方案

这个 回答 来自乔恩·斯基特(Jon Skeet

Mutex是必经之路。它比使用过程名称等要脆弱得多。

但是,您需要确保未收集Mutex。对于服务(这是事件驱动而不是具有完成完成的“主要”方法),最明智的方法可能是将其放置在静态变量中。

服务停止时处理互斥X,因此您无需等待最终确定或类似的内容。

马修·布林德利(Matthew Brindley)在同一问题中给出了这个示例 他的回答

[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());
   }
}

为了最大化其他应用程序,您需要将其发送消息以最大化。请参阅本文 消息发送

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top