And*_*bel 5 .net c# silverlight wcf multithreading
假设我有Silverlight应用程序调用WCF服务:
void DoStuff()
{
MyProxy proxy = new MyProxy();
proxy.DoStuffCompleted += DoStuffCompleted;
proxy.DoStuffAsync();
}
void DoStuffCompleted(object sender, DoStuffCompletedEventArgs e)
{
// Handle the result.
}
Run Code Online (Sandbox Code Playgroud)
DoStuff
由UI线程调用.什么线程最终会调用该DoStuffCompleted
方法?如果我同时调用两个异步调用,是否有可能在不同的线程上同时触发两个已完成的事件?
回调将在主线程上调用。多个响应不会同时发生。响应事件的顺序可能是意外的。您可能想要使用接受“用户状态”对象的 proxy.DoStuffAsync 重载:
proxy.DoStuffAsync(object userState)
这将允许您为每个呼叫发送唯一的内容,以便您可以区分您正在处理的响应。请记住,如果 WCF 调用返回错误,则没有返回值 - 因此 userState 可能是了解哪个调用失败的唯一方法(如果很重要)。
更新:
找到了一些关于如何使其使用另一个线程的更多信息(关于SO):
Silverlight Web 服务回调性能请点击Tomek博客的链接获取更多信息。
归档时间: |
|
查看次数: |
2362 次 |
最近记录: |