1

管理されていないアプリケーションから既定の .NET AppDomain をアンロードする方法はありますか?

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

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

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

4

1 に答える 1

2

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

于 2010-03-25T13:26:02.960 に答える