0

在测试中运行时出现以下错误:

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 缓存应用程序块缓存在服务器端。

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

4

1 回答 1

1

发现了问题。

我们没有正确关闭 WCF 代理。我们使用“使用”而不是关闭或中止的尝试捕获。

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

于 2009-08-29T07:05:37.307 回答