C# 在WP8上同步运行基于任务的异步方法

C# 在WP8上同步运行基于任务的异步方法,c#,asynchronous,windows-phone-8,task,C#,Asynchronous,Windows Phone 8,Task,我正在尝试在WP上同步运行一个基于任务的异步方法。在从中读取代码之后。我成功地做到了这一点,从系统库同步调用异步方法 但是,没有针对每个API的任务库异步方法,特别是在WP中,例如WebRequest.BeginGetResponse。所以我写了一个总结,比如: Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); Task.Fact

我正在尝试在WP上同步运行一个基于任务的异步方法。在从中读取代码之后。我成功地做到了这一点,从系统库同步调用异步方法

但是,没有针对每个API的任务库异步方法,特别是在WP中,例如WebRequest.BeginGetResponse。所以我写了一个总结,比如:

Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, 
        request.EndGetResponse, null);
Task.Factory.fromsync(request.BeginGetResponse,
request.EndGetResponse,null);
而且,具有讽刺意味的是,当我尝试从UI线程同步调用它时(有一点停顿?我只是在做一个测试),我的程序被困在request.BeginGetResponse中,而且永远不会继续

但是为什么呢?我使用相同的代码来调用系统api和我的方法。我的代码有错误吗?还是别的什么


非常感谢你的帮助

您需要调用Task。按如下方式开始:

var requestTask = Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, 
      request.EndGetResponse, null);

我还建议您考虑添加,然后您可以异步并等待此任务。

您可能遇到了,在UI线程被阻止时,
async
方法试图在UI线程上恢复


最好的解决方案是始终使用“
async
”——也就是说,将同步调用方法更改为异步。

是的,你说得对,非常感谢。事实上,我发现异步和UI的情况对新手来说非常危险。我会按照你的建议在未来发展,非常感谢!
Task.Wait(requestTask);