2016-06-13 256 views
1

建立在VS2105单元测试,创建使用Unity,我开始收到以下错误某些COM对象后:托管调试助手“DisconnectedContext”

Managed Debugging Assistant 'DisconnectedContext' has detected a problem in 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\te.processhost.managed.exe'.

我有一个快速浏览一下,看看是否有人有同样的问题,并且很多问题的解决方案要么在自己的线程中启动测试,要么将目标体系结构更改为x64。这些解决方案都不适合我,因为它们更像解决问题的方法。

因此,小小的想法后,我意识到问题是COM对象没有被测试框架给予足够的时间清除。所以我想出了以下解决方案。

回答

1

要解决该问题,我添加以下代码以撕裂下来/测试清理单元测试的方法,包括:

_unity.Dispose(); GC.Collect(); GC.WaitForPendingFinalizers();

如果使用Unity第一行仅需要然而的主要部分修复是最后两行。他们强制垃圾收集,然后告诉当前线程等待,直到完成。从而允许COM对象正确地清除。