托管调试助手' DisconnectedContext'

时间:2016-06-13 10:17:45

标签: unit-testing visual-studio-2015 com unity-container

在VS2105中设置单元测试后,使用Unity创建了一些COM对象,我开始收到以下错误:

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 个答案:

答案 0 :(得分:1)

为解决这个问题,我将以下代码添加到单元测试的拆卸/测试清理方法中:

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

第一行只有在使用Unity时才需要,但修复的主要部分是最后两行。它们强制进行垃圾收集,然后告诉当前线程等待它完成。因此,可以正确地清除COM对象。