呼び出しコンテキストの使用

呼び出しコンテキストを使用すると、パラメータや戻り値として情報を明示的に渡さなくても、リモート処理クライアントとリモート オブジェクトで情報を共有できるようになります。CallContext クラスには、シリアル化可能としてマークされ、ILogicalThreadAffinative インターフェイスを実装するオブジェクトをいくつでも格納できるディクショナリが用意されています。オブジェクトを CallContext に追加するには、SetData を呼び出します。オブジェクトを CallContext から取得するには、GetData を呼び出します。オブジェクトは、アプリケーションの実行中にいつでも CallContext に追加できます。

Noteメモ :

CallContext のスコープは各スレッドです。アプリケーションで実行されているスレッドごとに、個別の CallContext オブジェクトがあります。

CallContext オブジェクトの使用方法を示すサンプルについては、「リモート処理の例 : CallContext」を参照してください。

CallContext オブジェクトは、リモート呼び出しが行われるときに、"__CallContext" プロパティとしてメッセージ (IMessage 実装) で渡されます。メッセージ シンクは、"__CallContext" プロパティがメッセージ シンク チェーンを通過するときに、"__CallContext" プロパティにオブジェクトを追加したり、取得したりできます。

非同期処理と CallContext

BeginInvoke メソッドは CallContext をサーバーに渡します。EndInvoke メソッドが呼び出されると、CallContext に格納されているデータは、BeginInvoke を呼び出したスレッドにコピーされます。

関連項目

概念

リモート処理の例 : CallContext

その他の技術情報

CallContexts と直接リモート処理
高度なリモート処理

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.