2010-02-24 188 views
0

有沒有辦法從非託管應用程序卸載默認的.NET AppDomain卸載默認的.NET應用程序域?如何從非託管應用程序

我正在使用名爲.NET Extender的第三方工具來使用Visual FoxPro中的.NET程序集,該程序允許我託管.NET控件,並且還可以在FoxPro環境中使用.NET類和方法。

我遇到的問題是,當從Visual FoxPro內部調試應用程序時,它會爲IDE的主vfp9.exe應用程序文件運行所有內容,並且似乎我的託管程序集句柄不會釋放。因此,當我對這些.NET程序集進行更改並想更新它們時,我必須關閉VFP IDE並重新打開它,否則在嘗試覆蓋這些文件時會遇到共享衝突。

我開始研究如何確保控件處置,但後來我遇到了this article by Rick Strahl,他基本上描述了問題實際上是主AppDomain未卸載。通過了解如何卸載默認的AppDomain我得出的結論是,這是不可能的,至少從託管的應用程序,但有可能是一個非託管的應用程序的信息看後。我的想法是,僅僅因爲一個非託管應用程序使用了.NET資源,它不應該繼續攜帶AppDomain和Runtime包裹。

+0

我已經無人問津,到目前爲止所以我交張貼在MSDN論壇這個問題。我將用任何給出的答案更新這篇文章。 http://social.msdn.microsoft.com/Forums/en-US/clr/thread/fae4e7ce-bc24-4db3-a2cf-b6b16be4d3ee – jpierson 2010-03-01 11:50:38

回答

1

這個問題得到回答的MSDN Forums,不幸看來這是不可能的,一個進程必須終止,以釋放資源,包括應用程序域。這是在它規定的documentation for the ICLRRuntimeHost.Stop接口方法描述「這個方法不釋放資源,主機,卸載應用程序域,或銷燬線程,你必須終止進程,釋放這些資源。」

相關問題