我希望在WP7项目中使用System.Threading.Task库来处理异步web请求。然而,在WP7中(我相信),您必须为http请求使用HttpWebRequest类(我的应用程序做了很多)。HttpWebRequest类只有一个BeginGetResponse方法,该方法通过要求传入回调参数来强制您使用旧的异步编程模型。
有没有任何方法可以使用WP7进入现代性,或者我被HttpWebRequest和回调卡住了?
更新Jon给了我一些很好的指导,让我找到使用Task.Factory.FromAsync将APM代码转换为TPL的正确方法,但我在使用Task.Ffactory.FromAsync时真的很吃力。第一个参数是IAsyncResult,我认为它将是您的BeginGetResponse或BeginGetRequest方法。但第二个参数是Func,我读过的文档通常建议将其作为最终方法。HttpWebRequest的EndGetRequest和EndGetResponse方法返回流。。。在那一刻,我迷失了方向。
通常,您可以使用TaskFactory.FromAsync
从开始/结束方法对构建Task<T>
。
我不知道TPL的WP7版本是否支持这一点,但这是我的起点。
另请参阅:"TPL和传统.NET框架异步编程"。