我有以下代码
static void Main(string[] args)
{
string url = "http://www.google.com";
Console.WriteLine(GetUrl(url).Result); // throws TaskCanceledException
Console.WriteLine(GetUrl2(url).Result);
}
public static Task<string> GetUrl(string url)
{
using (var client = new HttpClient())
{
return client.GetStringAsync(url);
}
}
public static Task<string> GetUrl2(string url)
{
using (var client = new WebClient())
{
return client.DownloadStringTaskAsync(url);
}
}
我正在尝试获取 url 的字符串,问题是 GetUrl 方法(使用 HttpClient 的 GetStringAsync)引发了 TaskCacelledException,但 GetUrl2 方法(使用 WebClient 的 DownloadStringTaskAsync)运行正常。这是由于using statement
? 我错过了什么?
编辑。在此示例中,我在任务上调用 Result 因为这是一个控制台应用程序,我知道最好在事件处理程序中等待结果。