为了账号安全,请及时绑定邮箱和手机立即绑定

在HttpClient上取消异步并等待不会在OSX上引发异常

在HttpClient上取消异步并等待不会在OSX上引发异常

C#
缥缈止盈 2021-04-06 17:09:51
阅读了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(),我相信这是平台之间不一致的原因。


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信