簡體   English   中英

在Web API中編寫API方法時,如何使用async / await啟用異步行為

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM