在.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();
}
这会导致问题或不利之处吗?
答案 0 :(得分:0)
在web-API方法中使用“异步等待”操作时,当前线程不会等待I / O操作: 作为您代码中的示例:
return _context.Rooms.ToListAsync();
此代码对数据库具有I / O操作,对当前线程使用async-await原因可以响应另一个请求,而不会阻塞I / O。 因此,无需使用任何多线程技术即可提高应用程序的吞吐量。这是非常有益的,不是!?