我想我的问题归结为:
给定两个异步方法,其中一个调用另一个。我应该在这两种方法中等待,还是只在第一种方法中等待?
这是我的场景。我正在使用 CQRS 和 MediatR 编写一个 ASP NET CORE WEB API。
我有这个异步 API 方法
[HttpGet]
public async Task<IActionResult> Get(Get.Query query)
{
var result = await _mediator.Send(query);
return Ok(result);
}
我还应该在我的 中异步/等待RequestHandler
吗?像这样
public class QueryHandler : IAsyncRequestHandler<Query, IEnumerable<Result>>
{
public async Task<IEnumerable<Result>> Handle(Query message)
{
return await _connection.QueryAsync<Result>("...");
}
}
或者我应该简单地这样做
public class QueryHandler : IAsyncRequestHandler<Query, IEnumerable<Result>>
{
public Task<IEnumerable<Result>> Handle(Query message)
{
return _connection.QueryAsync<Result>("...");
}
}
我感到困惑的原因是因为API请求已经在一个线程中。那么将它包装在另一个线程中不是正确的方法吗?我看过这两个例子:/