在我的应用程序中,我有主窗口,用户可以从中打开另一个WPF窗口。 当用户关闭主窗口时,我想退出应用程序,所以我写了这段代码:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
try
{
if (onClosingAppFlag == true)
return;
string s = " Exit the application ?" + Environment.NewLine +
"(Exit process duration is about 5 seconds)" + Environment.NewLine +
" Are you sure? ";
MessageBoxResult dres = MessageBox.Show(this, s, "Exit from RTS",
MessageBoxButton.YesNo, MessageBoxImage.Question);
if (dres == MessageBoxResult.No)
{
e.Cancel = true;
return;
}
onClosingAppFlag = true;
App.Current.Shutdown();
OnClosingApp();
}
catch (Exception ex)
{
string line = "Error, Exeption occuredd at MainWindow.Window_Closing() : " + Environment.NewLine + ex.Message;
AppWinServices.Singleton.LogFileWrite(line);
}
}
但是第二个窗口仍然出现并且正在运行,因为它有一个等待信号的线程。
为了防止这种情况,我添加了代码,用于结束等待Window_Closing
事件信号的线程。现在,如果用户关闭第二个窗口,它就可以工作(线程停止等待,然后窗口关闭),但如果需要从主窗口关闭此窗口,则它不起作用,窗口继续等待。
可能Application.Current.Shutdown();
不会导致Window.Closing
事件?
如果没有,我怎么能在第二个窗口停止等待,换句话说我知道窗口将要关闭?
感谢。
答案 0 :(得分:0)
致电ShutdownMode
或将OnMainWindowClose
属性设置为App.xaml.cs
中的protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
ShutdownMode = ShutdownMode.OnMainWindowClose;
}
:
IntermediateOutputPath
what's difference between Environment.Exit() and Application.Shutdown()?