我發現我們錯過了數據或當前上下文當我們把異步多線程切換調用。爲了處理這種情況,你可以嘗試使用CallContext。它應該用於.NET遠程處理,但它也應該在這種情況下工作。
坐落在CallContext中的數據:
DataObject data = new DataObject() { RequestId = "1234" };
CallContext.SetData("DataSet", data);
檢索共享從CallContext中的數據:
var data = CallContext.GetData("DataSet") as DataObject;
// Shared data object has to implement ILogicalThreadAffinative
public class DataObject : ILogicalThreadAffinative
{
public string Message { get; set; }
public string Status { get; set; }
}
爲什麼ILogicalThreadAffinative?
當對另一個AppDomain中的對象進行遠程方法調用時,當前的CallContext類會生成一個LogicalCallContext,並隨調用一起傳輸到遠程位置。
只有公開ILogicalThreadAffinative接口並存儲在CallContext中的對象纔在AppDomain之外傳播。
謝謝,我會探討這個選項。 – Sylvain 2009-12-14 13:37:36
@Darin:檢查我提供的其他答案,您對此有何看法? – Sylvain 2009-12-14 20:54:50
應該是'WcfOperationContext'而不是'WcfInstanceContext'? – dan 2012-03-29 06:46:09