阅读了Stephen Cleary关于消除异步并等待的博客文章之后,我决定去尝试一下。我使用Visual Studio For Mac用HttpClient编写了一个非常简单的控制台应用程序。
public static async Task Main(string[] args)
{
Console.WriteLine(await Get());
Console.WriteLine("Hello World!");
}
public static Task<string> Get()
{
using (var http = new HttpClient())
return http.GetStringAsync("http://google.com");
}
根据博客文章,它应该抛出一个异常,但是没有。如果我切换到Windows并尝试运行此应用程序,则将按预期方式获得TaskCancelledException,但在macOS上,它的工作原理非常好。
在macOS上无一例外地证明Google.com已打印到控制台中的证明
我相信此行为背后的原因是两个平台上HttpClient中IDisposable的实现不同,但是...为什么?
慕雪6442864
相关分类