不能使用基于任务的操作的WP8 SDK导入服务参考

时间:2012-11-07 08:48:38

标签: web-services asynchronous visual-studio-2012 task-parallel-library windows-phone-8

到目前为止,似乎在VS2012中使用“生成基于任务的操作”导入服务引用不起作用。它显得很灰暗。

使用WPF新项目的测试工作正常 - 我可以选择基于任务的操作或异步操作。

在任务中包装异步调用有简单的方法吗?

1 个答案:

答案 0 :(得分:7)

  

在任务中包装异步调用有简单的方法吗?

WebClient.DownloadStringCompleted

的示例
public static class WebClientAsyncExtensions
{
    public static Task<string> DownloadStringTask(this WebClient client, Uri address)
    {
        var tcs = new TaskCompletionSource<string>();

        DownloadStringCompletedEventHandler handler = null;
        handler = (sender, e) =>
            {
                client.DownloadStringCompleted -= handler;

                if (e.Error != null)
                {
                    tcs.SetException(e.Error);
                }
                else
                {
                    tcs.SetResult(e.Result);
                }
            };

        client.DownloadStringCompleted += handler;
        client.DownloadStringAsync(address);

        return tcs.Task;
    }
}

用法:

async void DownloadExample()
{
    WebClient client = new WebClient();
    await client.DownloadStringTask(new Uri("http://http://stackoverflow.com/questions/13266079/"));
}