說我這個代碼:確定哪些WCF請求的回調是當前的事件處理
for(i=0;i<5;i++)
{
client c = new client();
c.fooAsyncCompleted+=h;
c.fooAsync(i);
}
,其中從WCF服務引用生成的客戶端類。現在在功能h
我需要知道哪個呼叫c.fooAsync
結果目前正在處理?有沒有辦法做這樣的事情?
說我這個代碼:確定哪些WCF請求的回調是當前的事件處理
for(i=0;i<5;i++)
{
client c = new client();
c.fooAsyncCompleted+=h;
c.fooAsync(i);
}
,其中從WCF服務引用生成的客戶端類。現在在功能h
我需要知道哪個呼叫c.fooAsync
結果目前正在處理?有沒有辦法做這樣的事情?
如果您使用Visual Studio生成的正常WCF代理類,則應該有一個方法超載,該方法需要一個UserState
參數。
c.fooAsync(i, i);
在您完成的處理程序中,您可以通過EventArgs
檢索該參數。
h(object sender, fooAsyncCompletedEventArgs e)
{
var x = e.UserState;
}
有了這些信息,您將知道該回調屬於哪個呼叫。
你可從處理程序的第一個放慢參數的處理事件的源,object sender
假設你的處理程序看起來像(一般)
void handler(object sender, EventArgs e)
您可以通過簡單的鑄件有你client
對象
var source = (client)sender;
你又究竟是如何識別它,是你的(這取決於類structu因爲它需要被識別,所以唯一的「id」屬性會這樣做)。