不能等我上课

GSe*_*usB 0 c# asynchronous

我正在创建一个ASP.NET Web窗体.我创建了一个User继承自的类IUser<string>.在另一个ApplicationUserStore继承自的类中,IUserStore<User>我有两个错误(两个方法都有相同的错误).

在里面

public async Task<User> FindByNameAsync(string userName) 
    { return await database.Users.Where(x => x.Username == userName).First(); }
Run Code Online (Sandbox Code Playgroud)

public async Task<User> FindByIdAsync(string userId) 
    { return await database.Users.Where(x => x.Id == userId).First(); }
Run Code Online (Sandbox Code Playgroud)

methdos我得到错误:无法等待用户.

为什么?我该怎么办?

谢谢!

Kir*_*oll 5

First()不是异步感知方法.它只是同步执行查询.你想要的是FirstAsync(),一个定义的扩展方法System.Data.Entity.所以添加:

using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)

对您的班级,并修改您的代码,如下所示:

public async Task<User> FindByNameAsync(string userName) 
{ 
    return await database.Users.Where(x => x.Username == userName).FirstAsync(); 
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为FirstAsync返回一个等待的任务.