c# - 将 WebClient 方法转换为异步/等待

标签 c# microsoft-metro async-await

我有一些要移植到 Windows 8 WinRT 的现有代码。代码从 URL 获取数据,异步调用传递的委托(delegate):

private void RequestData(string uri, Action<string> action)
{
  var client = new WebClient();
  client.DownloadStringCompleted += (s,e) => action(e.Result);
  client.DownloadStringAsync(new Uri(uri));
}

转换为 WinRT 需要使用 HttpClient 和异步方法。我已经阅读了一些关于异步/等待的教程,但有点困惑。我怎样才能更改上面的方法,同时保持方法签名以避免更改更多我的代码?

最佳答案

private async void RequestData(string uri, Action<string> action)
{
    var client = new WebClient();
    string data = await client.DownloadStringTaskAsync(uri);
    action(data);
}

参见:http://msdn.microsoft.com/en-us/library/hh194294.aspx

关于c# - 将 WebClient 方法转换为异步/等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240915/

相关文章:

c# - 返回程序顶部再试一次

c# - ASP.NET Web 窗体中的长进程 - 浏览器超时

c# - wp8 Package.Current.InstalledLocation.GetFolderAsync 获取不到Assets下的新建文件夹

c# - ProgressRing 变为非事件状态

c# - Task.WhenAll 订单的结果有保证吗?

c# - 有效地从大型列表中删除重复项?

c# - 我需要一个正则表达式来检测 MailChimp 标签

c# - Windows 8 - 开始动画?

javascript - 使用 JavaScript 的 Windows 8 语义缩放

c# - LINQ 使所有方法异步