アプリケーション ドメインとスレッド

アプリケーション ドメインは、セキュリティ、バージョン管理、信頼性のための、またマネージ コードをアンロードするための分離の境界を形成します。スレッドは、共通言語ランタイムがコードを実行するために使用する、オペレーティング システムの構成です。実行時には、すべてのマネージ コードがアプリケーション ドメインに読み込まれ、マネージ スレッドによって実行されます。

アプリケーション ドメインとスレッドとの関係は一対一ではありません。1 つのアプリケーション ドメイン内で一度に複数のスレッドが実行される場合があり、また 1 つのスレッドが 1 つのアプリケーション ドメインに限定されることもありません。つまり、スレッドはアプリケーション ドメイン境界を自由に越えることができ、アプリケーション ドメインごとに新しいスレッドが生成されるわけではありません。

特定の時点に限って見れば、どのスレッドも 1 つのアプリケーション ドメイン内で実行されています。特定のアプリケーション ドメインでゼロ、1 つ、または 2 つ以上のスレッドを実行できます。ランタイムは、どのスレッドがどのアプリケーション ドメインで実行されているかを追跡しています。任意の時点で、あるスレッドが実行されているドメインを特定するには、GetDomain メソッドを呼び出します。

アプリケーション ドメインとカルチャ

CultureInfo オブジェクトをスレッドに結合できます。ただし、他のアプリケーション ドメインから悪意のあるコードが侵入することを防ぐため、スレッドがアプリケーション ドメインの境界線を越える場合に CultureInfo オブジェクトは自動的に読み取り専用に設定されます。

カスタマイズされた Calendar のように CultureInfo オブジェクトがカスタマイズされている場合、スレッドがアプリケーション ドメインの境界線を越えようとすると InvalidOperationException がスローされます。

参照

関連項目

Thread.GetDomain Method

その他の技術情報

アプリケーション ドメイン