閱讀了Stephen Cleary關(guān)于消除異步并等待的博客文章之后,我決定去嘗試一下。我使用Visual Studio For Mac用HttpClient編寫了一個(gè)非常簡單的控制臺(tái)應(yīng)用程序。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");}根據(jù)博客文章,它應(yīng)該拋出一個(gè)異常,但是沒有。如果我切換到Windows并嘗試運(yùn)行此應(yīng)用程序,則將按預(yù)期方式獲得TaskCancelledException,但在macOS上,它的工作原理非常好。在macOS上無一例外地證明Google.com已打印到控制臺(tái)中的證明我相信此行為背后的原因是兩個(gè)平臺(tái)上HttpClient中IDisposable的實(shí)現(xiàn)不同,但是...為什么?
1 回答

慕雪6442864
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
將單存儲(chǔ)庫與dotnet存儲(chǔ)庫進(jìn)行比較,我發(fā)現(xiàn)HttpClient的單存儲(chǔ)庫實(shí)現(xiàn)不會(huì)在Dispose方法中調(diào)用CancellationTokenSource.Cancel(),我相信這是平臺(tái)之間不一致的原因。
- 1 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)
0/150
提交
取消