在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对象足够的时间来清除。所以我提出了以下有效的解决方案。
答案 0 :(得分:1)
为解决这个问题,我将以下代码添加到单元测试的拆卸/测试清理方法中:
_unity.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
第一行只有在使用Unity时才需要,但修复的主要部分是最后两行。它们强制进行垃圾收集,然后告诉当前线程等待它完成。因此,可以正确地清除COM对象。