デフォルトの .NET AppDomain をアンマネージド アプリケーションからアンロードする方法

StackOverflow https://stackoverflow.com/questions/2330390

質問

デフォルトの .NET AppDomain をアンマネージド アプリケーションからアンロードする方法はありますか?

というサードパーティツールを使用しています .NETエクステンダー Visual FoxPro 内から .​​NET アセンブリを使用するため、.NET コントロールをホストし、FoxPro 環境内から .​​NET クラスとメソッドを利用できるようになります。

私が抱えている問題は、Visual FoxPro 内からアプリケーションをデバッグするときに、IDE のメイン vfp9.exe アプリケーション ファイルの下にあるすべてのものが実行され、マネージド アセンブリへのハンドルが解放されていないように見えることです。したがって、これらの .NET アセンブリに変更を加えて更新したい場合は、VFP IDE を閉じて再度開く必要があります。そうしないと、ファイルを上書きしようとすると共有違反が発生します。

コントロールを確実に破棄する方法を調べ始めましたが、そこで見つけました。 Rick Strahl によるこの記事 ここで彼は基本的に、問題はメインの AppDomain がアンロードされていないことであると説明しています。デフォルトの AppDomain をアンロードする方法に関する情報を調べた結果、これは少なくともマネージド アプリケーションからは不可能ですが、アンマネージド アプリケーションでは可能であるという結論に達しました。私の考えは、アンマネージ アプリケーションが .NET リソースを使用したからといって、AppDomain とランタイムの荷物を持ち続ける必要はない、ということです。

役に立ちましたか?

解決

この質問は、 MSDN フォーラム そして残念ながら、これは不可能であり、アプリ ドメインを含むリソースを解放するにはプロセスを終了する必要があるようです。これについては、 ICLRRuntimeHost.Stop のドキュメント インターフェイス メソッドで、「このメソッドはホストにリソースを解放したり、アプリケーション ドメインをアンロードしたり、スレッドを破棄したりしません。これらのリソースを解放するにはプロセスを終了する必要があります。」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top