假设我有两个应用程序:
现在的问题是,当我关闭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;
}
}
答案 0 :(得分:3)
您的问题是WPF应用程序的默认设置是在主窗口关闭时关闭。要更改此设置,请在打开主窗口之前在XAML或代码中将ShutdownMode设置为OnExplicitShutdown
。然后,当您认为退出应用程序时,您需要明确调用Shutdown方法。
那就是说,你引用另一个 app 的方式非常奇怪,通常你会引用另一个Window
。我不知道当两个应用程序同时运行时会发生什么。您可能也想要理顺这一点,上面的解决方案实际上只是解决您有两个应用程序问题的快速解决方法。