我正在使用HttpClient将数据发布到.NET 4.0项目中的远程服务.我不关心这个操作阻塞,所以我想我可以跳过ContinueWith或async/await并使用Result.
在调试时,我遇到了远程服务器没有响应的问题.当我逐步完成代码时,似乎我的代码在第三行停止运行...当前堆栈指针线停止突出显示为黄色,并且没有前进到下一行.它刚刚消失了.我花了一段时间才意识到我应该等待请求超时.
var client = new HttpClient();
var task = client.PostAsync("http://someservice/", someContent);
var response = task.Result;
Run Code Online (Sandbox Code Playgroud)
我的理解是调用任务上的Result导致代码同步执行,表现得更像这样(我知道HttpClient中没有Post方法):
var client = new HttpClient();
var response = client.Post("http://someservice/", someContent);
Run Code Online (Sandbox Code Playgroud)
我不确定这是件坏事,我只是试图理解它.真的是因为HttpClient正在返回Tasks而不是直接返回结果,我的应用程序即使在我认为我正在避免它时也会自动利用异步吗?