首页 新闻 会员 周边

vs2010中出现ContextSwitchDeadlock异常

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-22 13:38

在vs2010中出现这种异常:CLR 无法从 COM 上下文 0x1061e48 转换为 COM 上下文 0x1061fb8,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息  这种问题该如何解决呀!!高手们帮帮忙啊!!

邓大林的主页 邓大林 | 初学一级 | 园豆:200
提问于:2010-11-27 11:06
< >
分享
最佳答案
0

你调用了一个STA的COM,而这个COM又实现的不够好。

尝试从MTA去创建COM对象,并确认COM组件也支持MTA。

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2010-11-27 18:50
具体如何做还不是很懂呀,还望指教!
邓大林 | 园豆:200 (初学一级) | 2010-11-30 09:37
@邓大林:那你的先回答,你的COM是有界面,还是无界面的?是STA还是MTA,还是BOTH?
Launcher | 园豆:45045 (高人七级) | 2010-12-01 20:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册