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

时间:2015-03-04 22:17:26

标签: c# wpf windows-7 .net-4.0

在我的WPF应用程序运行时尝试按标准Windows 7注销按钮时,我收到“此程序阻止Windows注销”。我想迫使它关闭,而不必按“强制注销”。

同样,在(应用程序)任务管理器中按“结束任务”会导致它无响应,而不是仅关闭程序。

我已经尝试将此添加到Window_Closing,但似乎没有这样做:

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

我是WPF的新手,但在我看来窗口没有正常关闭。如何在执行Windows注销时阻止“程序阻止Windows注销”,或者在从任务管理器中删除它时“程序没有响应”?

1 个答案:

答案 0 :(得分:1)

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

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

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