为什么我在调试时会冻结Word?

时间:2008-10-09 19:26:12

标签: .net debugging ms-word

每当我在Visual Studio 2008中的某个C#.NET应用程序中处于断点并启动Microsoft Word 2007时,在重新启动C#应用程序之前,单词将无法打开。我有一些关于原因的理论,但有人确切知道吗?

2 个答案:

答案 0 :(得分:4)

这可能是因为Word正在向顶级窗口发送DDE消息,并且您的应用程序无法处理它,因为它挂在调试器中。 Raymond Chen对此有blog post(虽然与调试器没有直接关系,但效果相同)。

答案 1 :(得分:2)

此类挂起的常见原因是(或曾经是)在启动时发送广播Windows消息并期望来自每个窗口的响应的应用程序。如果您在调试器中打开了GUI应用程序,那么它将不会回复Windows消息,因此发送应用程序将等待响应。我记得使用这种技术的最常见的程序类型是安装程序。

我不知道Word 2007是否发送任何广播消息,但这只是一种可能发生的方式。有很多方法可以将COM / OLE的东西挂起来,这似乎更有可能是Word。