[英]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.