如何避免 WPF 应用程序在注销时不响应

How to avoid WPF Application not Responding when logging off

当我的 WPF 应用程序为 运行 时尝试按标准 Windows 7 注销按钮时,我得到 "This program is preventing Windows from logging off"。我想强制关闭它而不必按 "Force log off"。

同样,在(应用程序)任务管理器中按 "End Task" 会导致它变得无响应,而不仅仅是关闭程序。

我试过将它添加到 Window_Closing,但这似乎没有成功:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    Environment.Exit(0);
}

我是 WPF 的新手,但在我看来 window 没有正确关闭。如何防止在执行 Windows 注销时出现 "program is preventing Windows from logging off",或在从任务管理器中将其杀死时出现 "Program is not responding"?

如果您的应用程序未响应从 Windows 发送的关闭事件,这应该只是一个问题。

如果您在 UI 线程上执行代码,这通常会发生,这会阻止它响应消息。因此,在结束事件和类似事件中放置一些东西不会有任何效果,因为它们将无法处理,直到您的 "work" 完成。

处理此问题的正确方法是将您的工作移至后台线程。这使应用程序保持响应,从而允许它响应从 Windows 到关闭的请求。