我希望在我的 WP7 项目中使用 System.Threading.Task 库来处理我的异步 Web 请求。但是,在 WP7 中(我相信)你必须使用 HttpWebRequest 类来处理 http 请求(我的应用程序做了很多)。 HttpWebRequest 类只有一个 BeginGetResponse 方法,该方法通过要求您传入回调参数来强制您使用旧的异步编程模型。
有没有什么方法可以使用 WP7 进入现代,或者我是否受困于 HttpWebRequests 和回调?
更新 Jon 给了我一些很好的指导,让我找到使用 Task.Factory.FromAsync 将 APM 代码转换为 TPL 的正确方法,但我真的很难使用 Task.Factory.FromAsync。第一个参数是 IAsyncResult,我假设它是您的 BeginGetResponse 或 BeginGetRequest 方法。但是第二个参数,我读过的文档通常建议应该是你的结束方法,是一个 Func。 HttpWebRequest 的 EndGetRequest 和 EndGetResponse 方法返回一个 Stream ... 到那时,我迷路了。
最佳答案
一般来说,你可以使用 TaskFactory.FromAsync
建立一个Task<T>
来自开始/结束方法对。
我不知道 TPL 的 WP7 版本是否支持它,但我会从这里开始。
另请参阅:"TPL and Traditional .NET Framework Asynchronous Programming" .
关于c# - 将 TPL 任务与 HttpWebRequest 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608159/