次の方法で共有


COM+リソースディスペンサースレッドの種類

COM+リソースディスペンサーへの呼び出しは、次のいずれかのスレッドの種類で発生する可能性があります。

  • アパートメントスレッド (STA)
  • フリースレッド (MTA)
  • 非COMのスレッド(アプリケーションまたはディスペンサーマネーージャーのガベージコレクタースレッド)

リソースディスペンサーがCOMオブジェクトでない場合は、任意のスレッドからの呼び出しをいつでも処理できる必要があります。 リソースディスペンサーがCOMオブジェクトである場合は、COMオブジェクトは両方のスレッド処理モデルで登録される必要があります。 これにより、STAまたはMTAスレッドは、スレッドスイッチを使用せずにリソースディスペンサーを作成して使用できます。

リソースディスペンサーが別のCOMオブジェクト(例えば、アウトプロセスリソースマネージャー)を作成して使用する場合、リソースディスペンサーは、この他のCOMオブジェクトへの複数のプロキシを維持し、呼び出し元のスレッドの適切なプロキシを使用してオブジェクトの呼び出しが行われるようにする必要があります。 リソースディスペンサーは、このオブジェクトを作成すると、参照をマーシャリングして保存します。 オブジェクトを再度呼び出す前に、マーシャリングを解除して、呼び出し元のスレッドのプロキシを作成する必要があります。

スレッドIDからプロキシポインターへのマップを保持することによって、これらのスレッドごとのプロキシをキャッシュする方が効率的な場合があります。 このマップは、プロセスで新しいスレッドが使用されると拡張されます。

COM+リソースディスペンサーの概念