Dom*_*ara 6 .net c# macos visual-studio async-await
阅读斯蒂芬克莱里关于消除异步的博客文章并等待我决定去玩它.我用HttpClient使用Visual Studio For Mac编写了非常简单的控制台应用程序.
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");
}
Run Code Online (Sandbox Code Playgroud)
根据博客文章,它应该抛出异常,但事实并非如此.如果我切换到Windows并尝试运行此应用程序,我将按预期获得TaskCancelledException,但在macOS上它完全正常.
证明Google.com在macOS上毫无例外地打印到控制台中
我相信这种行为背后的原因是两个平台上HttpClient中IDisposable的不同实现,但是......为什么?
将mono 存储库与dotnet 存储库进行比较,我发现 HttpClient 的 mono 实现不会在 Dispose 方法中调用 CancellationTokenSource.Cancel() ,我相信这是平台之间不一致的原因。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |