C#写的一个网页抓数据的程序,每次最后一个任务结束后就出现SwitchContextDeadLock,在异常里把这个勾掉了,现在又变成这个了:
检测到 DisconnectedContext
Message: 针对此 RuntimeCallableWrapper 向 COM 上下文 0x731b7d8 的转换失败,错误如下: 被调用的对象已与其客户端断开连接。 (异常来自 HRESULT:0x80010108 (RPC_E_DISCONNECTED))。原因通常是创建此 RuntimeCallableWrapper 的 COM 上下文 0x731b7d8 已断开连接,或者该上下文正忙于执行其他操作,无法处理该上下文转换。将不会有代理服务于该 COM 组件上的请求,调用将直接转向该 COM 组件。这可能会导致损坏或数据丢失。要避免此问题,请确保在应用程序全部完成 RuntimeCallableWrapper (表示其内部的 COM 组件)之前,所有 COM 上下文/单元/线程都保持活动状态并可用于上下文转换。
这种情况怎么解决,怎么调试啊?我都不知道错在哪儿啊?
当然是先搞明白,你的程序是否使用了 COM 组件。
是啊,使用了,动态创建webbrowser控件
@沧海一杰: 错误的意思就是 webbrowser 已经或正在被销毁,但是你还在调用它。你应该在所有任务都完成后,再销毁 webbrowser 控件。