“await”运算符只能在异步方法中使用。考虑使用“async”修饰符标记此方法并更改其返回类型
c#
我看到有很多关于我收到的错误的问题-
错误 CS4032:“await”运算符只能在异步方法中使用。考虑使用“async”修饰符标记此方法并将其返回类型更改为“Task <Task <IList >>”。
这是代码-
public async Task <IList <Alert>> ListOfAlerts (int id)
{
IList <Alert> returnList = new List <Alert> ();
try
{
Users currentUser = await _context.User.Where (x => x.Id == id) .FirstOrDefaultAsync ();
returnList = await _context.Alert.Include (c => c.Group) .Where (x => x.UsersId == currentUser.Id) .ToListAsync ();
}
catch (Exception e)
{
Console.WriteLine (e.Message);
}
return returnList;
}
我根据答案编写了代码,然后我遇到了同样的错误。
我哪里错了?问候
回答
您await的 (Quick)Watch 窗口中有一个ed 表达式;这些检查员不支持异步代码。
如果要检查查询的结果,请执行以下任一操作:
- 按 F10 将当前指令前进一行,然后检查
returnList - 检查之后 的所有结果
await(也没有变量赋值)并附加 a.Result,因此:_context.Alert.Include(c => c.Group).Where(x => x.UsersId == currentUser.Id).ToListAsync().Result;(请注意,这可能会导致其他问题,尤其是在冻结线程或同步上下文代码中,AFAIK,基本上会使调试器死锁)- 或者,检查非异步变体:
_context.Alert.Include(c => c.Group).Where(x => x.UsersId == currentUser.Id).ToList()
THE END
二维码