呼び出しコンテキストの使用
このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows Communication Foundation (WCF) を使用して開発する必要があります。
呼び出しコンテキストを使用すると、パラメーターや戻り値として情報を明示的に渡さなくても、リモート処理クライアントとリモート オブジェクトで情報を共有できるようになります。CallContext クラスには、シリアル化可能としてマークされ、ILogicalThreadAffinative インターフェイスを実装するオブジェクトをいくつでも格納できるディクショナリが用意されています。オブジェクトを CallContext に追加するには、SetData を呼び出します。オブジェクトを CallContext から取得するには、GetData を呼び出します。オブジェクトは、アプリケーションの実行中にいつでも CallContext に追加できます。
注 : |
---|
CallContext のスコープは各スレッドです。アプリケーションで実行されているスレッドごとに、個別の CallContext オブジェクトがあります。 |
CallContext オブジェクトの使用方法を示すサンプルについては、「リモート処理の例 : CallContext」を参照してください。
CallContext オブジェクトは、リモート呼び出しが行われるときに、"__CallContext" プロパティとしてメッセージ (IMessage 実装) で渡されます。メッセージ シンクは、"__CallContext" プロパティがメッセージ シンク チェーンを通過するときに、"__CallContext" プロパティにオブジェクトを追加したり、取得したりできます。
非同期処理と CallContext
BeginInvoke メソッドは CallContext をサーバーに渡します。EndInvoke メソッドが呼び出されると、CallContext に格納されているデータは、BeginInvoke を呼び出したスレッドにコピーされます。