2014-02-21 20 views
0

說我這個代碼:確定哪些WCF請求的回調是當前的事件處理

for(i=0;i<5;i++) 
{ 
    client c = new client(); 
    c.fooAsyncCompleted+=h; 
    c.fooAsync(i); 
} 

,其中從WCF服務引用生成的客戶端類。現在在功能h我需要知道哪個呼叫c.fooAsync結果目前正在處理?有沒有辦法做這樣的事情?

回答

2

如果您使用Visual Studio生成的正常WCF代理類,則應該有一個方法超載,該方法需要一個UserState參數。

c.fooAsync(i, i); 

在您完成的處理程序中,您可以通過EventArgs檢索該參數。

h(object sender, fooAsyncCompletedEventArgs e) 
{ 
    var x = e.UserState; 
} 

有了這些信息,您將知道該回調屬於哪個呼叫。

0

你可從處理程序的第一個放慢參數的處理事件的源,object sender

假設你的處理程序看起來像(一般)

void handler(object sender, EventArgs e) 

您可以通過簡單的鑄件有你client對象

var source = (client)sender; 

你又究竟是如何識別它,是你的(這取決於類structu因爲它需要被識別,所以唯一的「id」屬性會這樣做)。

相關問題