3

我希望在我的 WP7 项目中使用 System.Threading.Task 库来处理我的异步 Web 请求。但是,在 WP7(我相信)中,您必须将 HttpWebRequest 类用于 http 请求(我的应用程序经常这样做)。HttpWebRequest 类只有一个 BeginGetResponse 方法,该方法通过要求您传入回调参数来强制您使用旧的异步编程模型。

有什么方法可以使用 WP7 进入现代性,还是我坚持使用 HttpWebRequests 和回调?

更新 Jon 给了我一些很好的指导,让我找到了使用 Task.Factory.FromAsync 将 APM 代码转换为 TPL 的正确方法,但我在使用 Task.Factory.FromAsync 方面真的很挣扎。第一个参数是 IAsyncResult,我假设它是您的 BeginGetResponse 或 BeginGetRequest 方法。但是第二个参数,我读过的文档通常建议应该是你的 end 方法,是一个 Func。HttpWebRequest 的 EndGetRequest 和 EndGetResponse 方法返回一个 Stream ......那时,我迷路了。

4

1 回答 1

4

通常,您可以使用从开始/结束方法对TaskFactory.FromAsync构建一个。Task<T>

我不知道 TPL 的 WP7 版本是否支持这一点,但这是我要开始的地方。

另请参阅:“TPL 和传统 .NET Framework 异步编程”

于 2012-11-28T15:09:23.773 回答