作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 WPF 应用程序,我需要在主窗口关闭时将其完全关闭。还有一个窗口可以被我这样打开运行的程序打开(变量名改了,不过逻辑是这样的):
private void NewWindowButton_Click(object sender, RoutedEventArgs e) {
Thread WindowThread = new Thread(new ThreadStart(NewWindowThread));
WindowThread.SetApartmentState(ApartmentState.STA);
WindowThread.IsBackground = true;
WindowThread.Start();
}
private void NewWindowThread() {
var NewWindow = new NewWindow();
NewWindow.Show();
Dispatcher.Run();
}
当主窗口关闭时,我让关闭事件调用应用程序关闭方法,如下所示:
private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
Application.Current.Shutdown();
}
这将关闭在与主窗口相同的线程中创建的所有窗口,但这不会关闭我在新线程中打开的其他窗口。如何确保在主窗口关闭时关闭所有窗口?
编辑:链接的帖子只部分回答了我的问题。使用函数 Environment.Exit(0);
可以关闭每个窗口,但它会导致我的所有窗口在单击 X 按钮后约 2-3 秒关闭,而 Application. Current.Shutdown();
立即关闭窗口但让其他线程保持打开状态。调用 Shutdown 后同一线程上没有发生任何事情,因此我不需要在它之后的 return 语句。
最佳答案
您可以将项目属性中的 ShutdownMode 更改为在主窗口关闭时关闭。在您的“Application.xaml”文件中更改
ShutdownMode="OnLastWindowClose"
到
ShutdownMode="OnMainWindowClose"
关于c# - 如何关闭具有在不同线程上运行的多个窗口的 WPF 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579468/
我是一名优秀的程序员,十分优秀!