异步等待与任务<T>。WP8 上的结果


 var factory1 = new TaskFactory();
 var task1 =  factory1.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null).Result;

上面的代码适用于Windows 8和Windows商店,但是当我尝试在Windows Phone 8中运行它时,它不起作用。它只是冻结并且没有响应任何内容,看起来运行任务需要很长时间。

我的目的是调用 Web 服务同步,而不使用 asycn 和 await 方法。

我的目的是调用 Web 服务同步,而不使用 asycn 和 await 方法。

你不应该那样做。WP8/Win8应该是异步的。 asyncawait使异步编程变得容易。

我有一篇博客文章详细解释了Result死锁的情况(尽管我有点惊讶它在这种情况下发生)。简而言之,async 方法正在尝试在 UI 线程上恢复,但 UI 线程被阻止,等待async方法完成。

为什么要同步?

这应该发生。当您请求结果时,应用程序将停止并等待,直到您实际获得结果。这意味着您同步等待。

如果要异步等待,则必须使用 await 关键字,因为它的语义是:当你得到结果时,然后继续执行;同时,继续进行 UI 工作

这就是等待(

隐含同步)和异步等待(又名等待)之间的区别。

相关内容

  • 没有找到相关文章

最新更新