gpt4 book ai didi

c# - 如何关闭具有在不同线程上运行的多个窗口的 WPF 应用程序?

转载 作者:行者123 更新时间:2023-11-30 16:01:33 25 4
gpt4 key购买 nike

我正在开发一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com