您的位置:首页 > 编程语言 > C#

解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载

2016-08-02 08:44 3075 查看
最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常
CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。
----

暂时可行的解决办法:
在Debug -> Exceptions -> Managed Debug Assistants里 去掉ContextSwitchDeadlock一项前面的钩。
在调试(菜单)-->异常-->-> Managed Debug Assistants里 去掉ContextSwitchDeadlock一项前面的钩。

参考文章:

http://www.csden.com/posts-id-1007.aspx

http://bbs.csdn.net/topics/370162431
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐