2016-06-13 251 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對象正確地清除。