Windows检测到应用程序挂起时记录堆栈跟踪

时间:2011-11-14 14:58:13

标签: wpf c#-4.0 windows-7

Windows 7窗口管理器定期将我的WPF应用程序检测为hung,将其重影并弹出无响应的消息。我已经使用该应用程序已有几个星期但没有看到它,但是与我有相同硬件的用户说他经常得到它。

所有可以在另一个线程上的任务中运行,所以我不知道从哪里开始寻找问题。如果用户等待应用程序响应它会快速恢复,所以我假设问题出现在GUI线程上,偶尔需要5秒钟才能运行。

有什么方法可以检测到DWM认为应用程序挂起的时候我可以记录堆栈跟踪吗?

2 个答案:

答案 0 :(得分:1)

一种方法是使用System.Diagnostics命名空间编写程序的跟踪。有了它,您可以在程序挂起之前找出最后一个操作。当Windows认为程序挂起时,您很难检查程序。 : - (

答案 1 :(得分:1)

我没有在WPF应用程序中完成此操作,但传统的方法是使用SendMessageTimeout每隔一段时间从后台线程发送一条WM_NULL消息,如果主UI线程没有处理消息,请说,30秒,为该线程生成堆栈转储。