如何关闭通过引用添加的应用程序?

时间:2018-01-31 13:46:30

标签: c# wpf

假设我有两个应用程序:

  1. App1(通过引用添加App2的主应用程序)
  2. App2通过引用添加到App1
  3. 现在的问题是,当我关闭App2(当App1)打开时,我同时关闭了应用程序,事实上Closing事件中我有这样的内容:< / p>

    Environment.Exit(0);
    

    我试图以这种方式修复:

     base.OnClosing(e);
     Application.Current.Shutdown();
    

    这将继续打开App1,但同时当我只启动App2(而非App1)应用程序仍然打开时,我可以看到这个'因为调试会话未关闭。

    我该如何处理这种情况?感谢。

    更新

    我从App2执行此代码致电App1

    App2.MainWindow.Instance.Show();
    

    Instance中的App2以这种方式定义:

    public static MainWindow Instance
    {
        get
        {
            if(AppWindow == null)
            {
                AppWindow = new MainWindow();
                AppWindow.InitializeComponent();
                AppWindow.Closed += (x, y) => 
                {
                    AppWindow = null;
                };
            }
    
            return AppWindow;
        }
    }
    

    变量AppWindow以这种方式定义:

     public partial class MainWindow
     {
        public static MainWindow AppWindow;
    
        public MainWindow()
        {
           InitializeComponent();
           AppWindow = this;
        }
    }
    

1 个答案:

答案 0 :(得分:3)

您的问题是WPF应用程序的默认设置是在主窗口关闭时关闭。要更改此设置,请在打开主窗口之前在XAML或代码中将ShutdownMode设置为OnExplicitShutdown。然后,当您认为退出应用程序时,您需要明确调用Shutdown方法。

那就是说,你引用另一个 app 的方式非常奇怪,通常你会引用另一个Window。我不知道当两个应用程序同时运行时会发生什么。您可能也想要理顺这一点,上面的解决方案实际上只是解决您有两个应用程序问题的快速解决方法。