我正在尝试在公共IUserStore接口中实现以下方法,因为我正在使用自定义身份验证:
public Task<User> FindByIdAsync(string userId)
{
var user = UserRetriever.GetUser(userId);
return ???;
}
UserRetriever工作正常,并获取我的User对象,但我该如何返回?
如果我试试这个:
return await user;
我被告知我的用户对象“不等待”。我是否可以在用户上实现一个界面以使其等待?
或者是否有一个可以让用户进入的等待容器,从这个方法返回它?
答案 0 :(得分:2)
您可以使用FromResult
:
return Task.FromResult(user);
请注意,这仅存在于.Net 4.5中,并且FindByIdAsync
方法的任何用户都希望异步进行提取,这是您当前实现所不能做到的。
您可以创建一个任务来执行检索:
return Task.Run(() => UserRetriever.GetUser(userId));
虽然这仍然存在阻塞问题。