呼叫內容提供一組隨附於執行程式碼路徑的屬性。當 CallContext 物件的執行個體在執行程式碼路徑上下移動時,可在其中加入項目。
當 CallContext 物件在內容和應用程式定義域間流動時,CallContext 會在「__CallContext」項目 (屬於 LogicalCallContext 型別) 的 IMessage 實作中傳遞。訊息接收在通過訊息接收鏈結時,可加入和查詢 __CallContext 中的項目。
在應用程式定義域界限上複製 (Clone) 呼叫內容。公開 ILogicalThreadAffinative 介面的物件會傳播到應用程式定義域之外,並加入到接收端的執行緒之內。不支援這個介面的物件,不會傳播到應用程式定義域之外。
CallContext 提供呼叫路徑的資料位置。CallContext.SetData 和 CallContext.GetData 可用來管理應用程式碼中的呼叫內容位置。每個呼叫路徑只有一個資料位置;也就是說在呼叫路徑上並不共用狀態。位置已命名。名稱可用來存取資料位置。可使用名稱來明確釋放位置。
如需使用 CallContext 的遠端處理範例,請參閱遠端處理範例:CallContext。
Async 和 CallContext
BeginInvoke 方法傳送 CallContext 至伺服器。在呼叫 EndInvoke 時,CallContext 會合併回執行緒中。連續呼叫 BeginInvoke 和 EndInvoke,以及在某一執行緒上呼叫 BeginInvoke 和在回呼函式上呼叫 EndInvoke 等情況,都包括在內。
當 CallContext 項目為目前執行緒上的 CallContext 以及 EndInvoke 提供的 CallContext 所共有時,EndInvoke 的項目會覆寫執行緒上 CallContext 中的項目。
內容相關的靜態欄位
內容相關的靜態欄位提供與內容有關的欄位。每當存取特定內容的靜態欄位時,存取值將與該內容相關;內容間並不共用欄位。如果存取另一個內容上的靜態欄位,則該欄位會包含不同的值。
若要使用內容相關的靜態欄位,只需將 ContextStaticAttribute 屬性套用至 ContextBoundObject 物件上的欄位。
請參閱
CallContext 和直接遠端處理 | 進階遠端處理 | 遠端處理範例:CallContext | CallContext