没有异步等待的.Net Task Controller方法

时间:2019-10-15 01:09:08

标签: .net .net-core controller async-await task

在.Net中,如果您有一个Task Controller方法,而该方法的任何操作及其依赖项的操作都没有异步等待(例如服务类,这些服务类也是不包含异步等待的Task方法),将会发生什么情况。

例如,RoomController.cs:

[HttpGet]
public Task<List<Room>> GetRooms()
{
    return _roomService.GetRoomsAsync();
}

... RoomService.cs:

    public Task<List<Room>> GetRoomsAsync()
    {
        return _context.Rooms.ToListAsync();
    }

这会导致问题或不利之处吗?

1 个答案:

答案 0 :(得分:0)

在web-API方法中使用“异步等待”操作时,当前线程不会等待I / O操作: 作为您代码中的示例:

 return _context.Rooms.ToListAsync();

此代码对数据库具有I / O操作,对当前线程使用async-await原因可以响应另一个请求,而不会阻塞I / O。 因此,无需使用任何多线程技术即可提高应用程序的吞吐量。这是非常有益的,不是!?