0

我有一个奇怪的错误:

托管调试助手“ContextSwitchDeadlock”在“C:\Documents and Settings\Lena G\My Documents\SchoolStuff\IR Information\Home Work\FianlProject\finalProject\finalProject\bin\Debug\finalProject.vshost.exe”中检测到问题。附加信息:CLR 在 60 秒内无法从 COM 上下文 0x3407968 转换到 COM 上下文 0x3407ad8。拥有目标上下文/单元的线程很可能要么进行非泵送等待,要么处理非常长时间运行的操作而不泵送 Windows 消息。这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随着时间的推移不断累积。为了避免这个问题,

在这个错误中,我可以继续运行或中断,如果我继续,那么它运行正常,但仍然让我担心。我有一个程序,我读取一个包含一些文本的 xml 文件,将单词放在哈希表中,然后从哈希写入规则文本文件。

Appriciate 如果有人可以帮助我解决这个问题。

提前致谢,

莉娜

4

1 回答 1

1

呸!托管调试助手很棒,但它们确实给出了详细的异常消息。在这种情况下,Visual Studio 会警告您,您的应用程序中执行 COM 调用的线程不能“正常”播放并正确响应 Windows 消息。

您可以继续运行,一切都应该很好 - 但首先调查导致问题的原因是有意义的。

你的代码具体做什么?它如何读取 XML 文件?文件有多大?

如果它只是处于解析 XMLDocument 的循环中,那么我会惊讶地看到这个错误。您可能(不寒而栗)要考虑检查您的 Windows 事件日志,看看您的硬盘上是否有任何坏扇区...

另一方面,如果您完全使用后台线程,那么可能存在资源匮乏的问题,或者在某个地方存在一个阻塞调用,它产生的频率不够高。

于 2009-12-30T20:50:30.370 回答