使用AsyncRequestHandler的Async API方法有太多线程?

时间:2017-08-01 21:22:16

标签: c# multithreading asp.net-core async-await mediatr

我想我的问题归结为:

  

给出两个异步方法,其中一个调用另一个。我应该等待两种方法,还是仅仅是第一种?

这是我的情景。 我正在使用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请求已经在一个线程中。那么将它包装在另一个线程中并不是正确的方法吗?我见过两个例子:/

0 个答案:

没有答案