[英]How do I enable asynchronous behavior using async /await while writing API methods in Web API
我已经在ASP.NET API代码下面编写了返回员工数据的代码
public async Task<IActionResult> employeegroups()
{
try
{
var employeegroups = _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
{
id = p.Key,
name = p.Name
}).ToList();
return Ok(employeegroups);
}
catch
{
return BadRequest();
}
}
我收到此警告:
这种异步方法缺少“等待”运算符,将同步运行。 考虑使用'await'运算符来等待非阻塞API调用,或使用'await Task.Run(...)'在后台线程上进行CPU绑定的工作
因此,我尝试添加`await':
var employeegroups = await _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
{
id = p.Key,
name = p.Name
}).ToList();
但是我得到这个警告:
列表'EmployeeGroupsEntity'不包含'GetAwaiter'的定义,找不到扩展方法'GetAwaiter'接受列表'EmployeeGroupsEntity'类型的第一个参数(您是否缺少using指令或程序集引用?)”
这是我的模型:
public class EmployeeGroupsEntity
{
public Guid id { get; set; }
public string name { get; set; }
}
当我们将Task<T>
作为方法的返回类型与async
关键字结合使用时,我们还应该使用await
关键字,以确保调用线程未被阻塞,并在await
之后继续执行方法行。 因此,您应该使用await
来调用ToListAsync
方法,例如:
var employeegroups = await _context.EmployeeGroups.Select(p => new EmployeeGroupsEntity()
{
id = p.Key,
name = p.Name
}).ToListAsync();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.