-4

DLL プロセスが分離されたアプリで実行されています。3 番目のアプリケーションから実行されたドメイン。AppDomain をアンロードしたい

Enviroment.Exit() を使用すると、親アプリケーション (DLL プロセスを起動するアプリ) も強制終了されます。

編集

次のようにすることもありません:

        AppDomain domainObj = AppDomain.CurrentDomain;
        AppDomain.Unload(domainObj);
4

1 に答える 1

0

DLL の関数がプロセス内の別の AppDomain でスレッドとして実行されている場合は、AppDomain.Unloadの呼び出しを試すことができます。ドキュメントによると、

スレッドが Unload を呼び出すと、ターゲット ドメインがアンロード用にマークされます。専用スレッドがドメインのアンロードを試み、ドメイン内のすべてのスレッドが中止されます。アンマネージ コードを実行している、または finally ブロックを実行しているなどの理由でスレッドが中止されない場合、一定期間が経過すると、最初に Unload を呼び出したスレッドで CannotUnloadAppDomainException がスローされます。中止できなかったスレッドが最終的に終了した場合、ターゲット ドメインはアンロードされません。したがって、.NET Framework バージョン 2.0 では、実行中のスレッドを終了できない可能性があるため、ドメインのアンロードが保証されません。

そのため、この他のアプリドメインを正常にアンロードできない場合は、他の代替手段を見つける必要がある場合があります。

于 2012-07-23T15:04:22.497 に答える