共用方式為


使用 CallContext

呼叫內容提供一組隨附於執行程式碼路徑的屬性。當 CallContext 物件的執行個體在執行程式碼路徑上下移動時,可在其中加入項目。

CallContext 物件在內容和應用程式定義域間流動時,CallContext 會在「__CallContext」項目 (屬於 LogicalCallContext 型別) 的 IMessage 實作中傳遞。訊息接收在通過訊息接收鏈結時,可加入和查詢 __CallContext 中的項目。

在應用程式定義域界限上複製 (Clone) 呼叫內容。公開 ILogicalThreadAffinative 介面的物件會傳播到應用程式定義域之外,並加入到接收端的執行緒之內。不支援這個介面的物件,不會傳播到應用程式定義域之外。

CallContext 提供呼叫路徑的資料位置。CallContext.SetDataCallContext.GetData 可用來管理應用程式碼中的呼叫內容位置。每個呼叫路徑只有一個資料位置;也就是說在呼叫路徑上並不共用狀態。位置已命名。名稱可用來存取資料位置。可使用名稱來明確釋放位置。

如需使用 CallContext 的遠端處理範例,請參閱遠端處理範例:CallContext

Async 和 CallContext

BeginInvoke 方法傳送 CallContext 至伺服器。在呼叫 EndInvoke 時,CallContext 會合併回執行緒中。連續呼叫 BeginInvokeEndInvoke,以及在某一執行緒上呼叫 BeginInvoke 和在回呼函式上呼叫 EndInvoke 等情況,都包括在內。

CallContext 項目為目前執行緒上的 CallContext 以及 EndInvoke 提供的 CallContext 所共有時,EndInvoke 的項目會覆寫執行緒上 CallContext 中的項目。

內容相關的靜態欄位

內容相關的靜態欄位提供與內容有關的欄位。每當存取特定內容的靜態欄位時,存取值將與該內容相關;內容間並不共用欄位。如果存取另一個內容上的靜態欄位,則該欄位會包含不同的值。

若要使用內容相關的靜態欄位,只需將 ContextStaticAttribute 屬性套用至 ContextBoundObject 物件上的欄位。

請參閱

CallContext 和直接遠端處理 | 進階遠端處理 | 遠端處理範例:CallContext | CallContext