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

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

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

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

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

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

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

参照

参照

Thread.GetDomain

概念

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