CLR无法从COM上下文0x22c4f60转换到COM上下文0x22c51b0 60秒

时间:2013-10-25 09:23:32

标签: vb.net clr asmx

我正在开发一个调用Web服务的应用程序,该服务从数据库中删除信息(该Web服务由第三方供应商开发)。在第一次运行时,将删除大约100,000条记录。

我已经对该例程进行了几次测试,偶尔会出现在Visual Studio中:

“CLR无法从COM上下文0x22c4f60转换到COM上下文0x22c51b0 60秒。 拥有目标上下文/公寓的线程很可能是在非抽空等待或处理非常长时间运行的操作而不抽取Windows消息。 这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积。 为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行期间定期泵送消息。“

我认为Web服务花了60多秒才将控制权传递回.NET Forms应用程序。请从消息中看到以下引用:“为了避免这个问题,所有单线程单元(STA)线程都应该使用抽取等待原语(例如CoWaitForMultipleHandles)并在长时间运行操作期间定期泵送消息”。由于这是一个Windows窗体应用程序,这是否意味着我不需要做任何事情来允许这个?

2 个答案:

答案 0 :(得分:2)

有时,由于服务器名称错误也可能会出现此问题,例如,如果您已包含SERVER/SQLEXPRESS而不是SERVER\SQLEXPRESS,那么此错误也会显示,这就是我的情况。

答案 1 :(得分:0)

检查并确定您是否使用未包含try / catches的阅读器。您应该努力并尝试更好地解决您的解决方案问题。 try / catch会导致超时,尤其是在while循环中。