当我们在测试中运行时,我们得到以下错误:
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缓存应用程序块在服务器端缓存数据。
在服务器端测试相同代码的测试没有错误地通过。
发布于 2009-08-29 07:05:37
找到了问题所在。
我们没有正确关闭WCF代理。我们使用的是" using“而不是try catch with close或abort。
因此,一个测试中的错误将导致在尝试使用相同的WCF服务的后续测试中出现ContextSwitchDeadlock。
https://stackoverflow.com/questions/1345755
复制相似问题