在HttpWebRequest中使用TPL任务

时间:2012-11-28 15:06:15

标签: c# windows-phone-7 asynchronous httpwebrequest task-parallel-library

我希望在我的WP7项目中使用System.Threading.Task库来处理我的异步Web请求。但是,在WP7中(我相信)你必须使用HttpWebRequest类来处理http请求(我的应用程序做了很多事情)。 HttpWebRequest类只有一个BeginGetResponse方法,它强制您使用旧的异步编程模型,要求您传入一个回调参数。

有没有办法使用WP7进入现代性,还是我坚持使用HttpWebRequests和回调?

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

1 个答案:

答案 0 :(得分:4)

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

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

另请参阅:"TPL and Traditional .NET Framework Asynchronous Programming"