Here g1ga 用户指向了网络资源,该资源解释了如果应用已经在运行,如何让新的应用实例不在任务管理器中显示。是的,一切正常,除了一个令人恼火的细节 - 用户不知道应用程序无法运行的原因:没有一些消息通知应用程序已经运行。因此,当我添加 MessageBox.Show(“应用程序已在运行”)时,它最终会显示在任务管理器中。它有可能不会发生吗?
答案 0 :(得分:1)
您需要通知应用程序的现有实例,以便它可以显示MessageBox本身。我已经使用this class很长一段时间了,它运作得很好(我不记得它原来是从哪里来的,所以我只是把它粘贴到Gist上)。基本上,在App.OnStartup
方法中,您可以调用CanStart
:
if (!SingleInstanceApp.CanStart(MyAppGuid))
{
Shutdown(0);
return;
}
创建主窗口时,将其注册为主窗口并指定一个新实例尝试启动时将调用的回调方法:
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
SingleInstanceApp.RegisterMainWindow(this, OnNewInstance);
}
private void OnNewInstance(string[] args)
{
MessageBox.Show("The application is already running");
}