我有RichTextBox,我会从多线程中记录大量的消息。过了一段时间后,我第一次收到了"DisconnectedContext被检测到“的消息,并从调试->异常中删除了对异常的破坏.窗户。但后来我收到了"ContextSwitchDeadlock被发现了“。我也删除了这个,UI又恢复了生机。过了一段时间,它又冻僵了。
有什么办法可以防止这种情况发生吗?或者,是否有一个组件支持着色、更改字体以在.NET (如RichTextBox )中提供可视化反馈,但没有此错误?
ContextSwitchDeadlock检测到
消息: CLR无法从COM上下文0x6eb0760转换到COM上下文0x6eb08d0 60秒。拥有目标上下文/单元的线程很可能要么执行非抽水等待,要么处理非常长时间运行的操作而不发送Windows消息。这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随着时间的推移而不断累积。为了避免这个问题,所有单线程单元(STA)线程都应该使用泵送等待原语(如CoWaitForMultipleHandles),并在长时间运行的操作中定期对消息进行泵入.。
发布于 2011-05-12 13:50:05
您确定要从多个线程更新RichTextBox吗?如果是这样的话,最好停止它,并使用UI线程来更新RTB。要做到这一点:调用theForm.BeginInvoke( delegate to a method that updates the RTB)
这应该允许所有并发线程在不等待响应的情况下尽快继续。
https://stackoverflow.com/questions/5960718
复制相似问题