WPF单实例应用和用户通知

时间:2014-01-19 08:11:27

标签: wpf

Here g1ga 用户指向了网络资源,该资源解释了如果应用已经在运行,如何让新的应用实例不在任务管理器中显示。是的,一切正常,除了一个令人恼火的细节 - 用户不知道应用程序无法运行的原因:没有一些消息通知应用程序已经运行。因此,当我添加 MessageBox.Show(“应用程序已在运行”)时,它最终会显示在任务管理器中。它有可能不会发生吗?

1 个答案:

答案 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");
    }