首页 > 解决方案 > await 调用崩溃但 .Result 成功

问题描述

我偶然发现了一个奇怪的问题......

这是一个简单的代码,只需使用 await 调用 API

public async Task<IEnumerable<DTO>> GetAll(int Id, string APIPath)
{
    var client = new HttpClient();
    var response = await client.GetAsync($"{APIPath}/Contract/GetAll?Id={Id}");
    var responseResult = await response.Content.ReadAsStringAsync();
    return JsonConvert.DeserializeObject<IEnumerable<DTO>>(responseResult.ToString());
}

当我调试时,当我越界时await。应用程序崩溃,没有任何异常,调试会话结束。

但是当我将 更改为await.Result,调试会话继续并继续正常运行,甚至返回来自 API 的响应。

我的猜测是,不知何故没有创建新线程并且调试会话由于崩溃而完成。有什么想法,为什么?

更新 它是一个 .Net Core 控制台应用程序

UPDATE2 不知道它有什么帮助,但这里是呼叫线......

var contracts = await _contractAdapter.GetAll(Id, APIPath);

标签: .net.net-coreasync-awaitconsole-application

解决方案


推荐阅读