次の方法で共有


マネージ管理コードへの遷移

ホストは、ランタイムを読み込んで初期化した後、マネージ管理コードとユーザー コードを実行するために、アンマネージ コードからマネージ コードに遷移する必要があります。マネージ管理コードは、通常は既定のアプリケーション ドメインで実行されます。ランタイムが初期化されるたびに、既定のアプリケーション ドメインはランタイムによって自動的に作成されます。プロセスがシャットダウンされるときに、既定のアプリケーション ドメインはアンロードされます。既定のアプリケーション ドメインはプロセスから独立してシャットダウンできないので、ほとんどのホストではユーザー コードを既定のアプリケーション ドメインでは実行しません。

マネージ コードに遷移するには、ホストは既定のアプリケーション ドメインへのポインタを取得し、そのドメインにホストのマネージ部分を読み込む必要があります。マネージ コードへの遷移が完了すると、ホストのマネージ部分は、ユーザー コードまたは追加の管理コードを配置するために別のアプリケーション ドメインを作成できます。詳細については、「アプリケーション ドメインの作成および構成」を参照してください。

ホストは、ICorRuntimeHost::GetDefaultDomain を呼び出すことによって、既定のアプリケーション ドメインへのインターフェイス ポインタを取得できます。この呼び出しは、既定のアプリケーション ドメインを表す System.AppDomain のインスタンスへのポインタを返します。このインターフェイス ポインタの型は _AppDomain です。要約すると、ホストは、COM 相互運用サービスを使用して System.AppDomain マネージ クラスのインスタンスのメソッドを呼び出し、マネージ管理コードを既定のドメインに読み込みます。ホストは既定のドメインへのポインタを取得後、System.AppDomainLoad メソッドのうちの 1 つを呼び出して、ホストのマネージ部分を既定のドメインに読み込むことができます。

通常、ホストのマネージ部分には、そのホストのロジックの大部分が含まれています。マネージ コードへの遷移が完了すると、アンマネージ管理コードは不要になります。ホストが読み込んで実行するユーザー コードはすべてマネージコードなので、ホストの大部分をマネージ コードに実装すると、パフォーマンスが向上します。パフォーマンスが向上するのは、管理コードからユーザー コードへの呼び出しがすべてマネージ環境で実行され、ホストとユーザー コードが対話するたびにアンマネージ コードとマネージ コードとの間を相互に遷移する必要がなくなるためです。

参照

共通言語ランタイムの管理 | AppDomain クラス | アプリケーション ドメインの作成および構成