阅读了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的实现不同,但是...为什么?
1 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
将单存储库与dotnet存储库进行比较,我发现HttpClient的单存储库实现不会在Dispose方法中调用CancellationTokenSource.Cancel(),我相信这是平台之间不一致的原因。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消