我想我的问题归结为:
给出两个异步方法,其中一个调用另一个。我应该等待两种方法,还是仅仅是第一种?
这是我的情景。 我正在使用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请求已经在一个线程中。那么将它包装在另一个线程中并不是正确的方法吗?我见过两个例子:/