2009-08-28 189 views
0

我们在测试中运行时出现以下错误:ContextSwitchDeadlock运行单元时(集成)测试

ContextSwitchDeadlock was detected 
Message: The CLR has been unable to transition from COM context 0x344b0c0 to COM 
context 0x344b230 for 60 seconds. The thread that owns the destination context/apartment is 
most likely either doing a non pumping wait or processing a very long running operation 
without pumping Windows messages. This situation generally has a negative performance 
impact and may even lead to the application becoming non responsive or memory usage 
accumulating continually over time. To avoid this problem, all single threaded apartment 
(STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and 
routinely pump messages during long running operations. 

测试做一个WCF调用从使用实体框架的数据库获取数据服务层上的方法。数据也使用EntLib缓存应用程序块在服务器端进行缓存。

在服务器端测试相同代码的测试通过时没有错误。

回答

1

发现问题。

我们没有正确关闭WCF代理。我们正在使用“使用”而不是尝试使用close或abort。

因此,一个测试中的错误会导致在试图使用相同WCF服务的后续测试中出现ContextSwitchDeadlock。