说我有这段代码:
for(i=0;i<5;i++)
{
client c = new client();
c.fooAsyncCompleted+=h;
c.fooAsync(i);
}
从wcf服务引用生成客户端类的位置。现在在函数h
中,我需要知道当前正在处理哪个c.fooAsync
结果调用?有办法吗?
答案 0 :(得分:2)
如果您使用的是Visual Studio生成的普通WCF代理类,则应该有一个带有UserState
参数的方法重载。
c.fooAsync(i, i);
在完成的处理程序中,您可以通过EventArgs
检索该参数。
h(object sender, fooAsyncCompletedEventArgs e)
{
var x = e.UserState;
}
使用该信息,您将知道回叫所属的呼叫。
答案 1 :(得分:0)
您可以从处理程序的第一个参数object sender
假设您的处理程序看起来像(通常)
void handler(object sender, EventArgs e)
您可以通过简单投射获得client
对象
var source = (client)sender;
你究竟如何识别它,取决于你(这取决于类结构......因为它需要被识别,一个独特的&#34; id&#34;属性会这样做。)