C# WPF应用程序的关闭是否导致窗口关闭事件?
在我的应用程序中,我有一个主窗口,用户可以从中打开另一个WPF窗口。 当用户关闭主窗口时,我想退出应用程序,因此我编写了以下代码:C# WPF应用程序的关闭是否导致窗口关闭事件?,c#,wpf,window,shutdown,C#,Wpf,Window,Shutdown,在我的应用程序中,我有一个主窗口,用户可以从中打开另一个WPF窗口。 当用户关闭主窗口时,我想退出应用程序,因此我编写了以下代码: private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { try { if (onClosingAppFlag == true)
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\u Closing
事件上等待信号。现在,如果用户关闭第二个窗口,它将工作(线程停止等待,然后窗口将关闭),但是如果需要从主窗口关闭此窗口,它将不工作,窗口将继续等待
可以是Application.Current.Shutdown()代码>不会导致窗口关闭。是否关闭事件?
如果不是,我如何才能停止在第二个窗口的等待,或者换句话说,在我知道窗口将要关闭的地方
谢谢 调用Environment.Exit(0)
或在App.xaml.cs
中将ShutdownMode
属性设置为OnMainWindowClose
:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
ShutdownMode = ShutdownMode.OnMainWindowClose;
}
我无法使用关机模式,因为我需要在关闭应用程序之前做额外的事情:(在你调用该方法之前先做这些…?或者按照我的第二个建议去做。我做不到。这是否太残酷了,正如链接中所解释的那样?你不能做什么?你问过如何在不等待的情况下立即关闭应用程序,是吗?或者你的问题是什么?如果我使用关机模式,在关闭应用程序之前我不能做额外的事情。我的问题是ho我能从窗口知道它需要关闭吗。