C# 从方法返回泛型任务

C# 从方法返回泛型任务,c#,async-await,C#,Async Await,在使用自定义身份验证时,我尝试在公共IUserStore接口中实现以下方法: public Task<User> FindByIdAsync(string userId) { var user = UserRetriever.GetUser(userId); return ???; } 我被告知我的用户对象“不可等待”。是否有一个界面,我可以实现对用户,使它等待 或者,我是否可以将用户放入一个等待的容器中,以从该方法返回它?您可以使用FromResult: retu

在使用自定义身份验证时,我尝试在公共IUserStore接口中实现以下方法:

public Task<User> FindByIdAsync(string userId)
{
    var user = UserRetriever.GetUser(userId);
    return ???;
}
我被告知我的用户对象“不可等待”。是否有一个界面,我可以实现对用户,使它等待


或者,我是否可以将用户放入一个等待的容器中,以从该方法返回它?

您可以使用
FromResult

return Task.FromResult(user);
请注意,这仅存在于.Net 4.5中,您的
FindByIdAsync
方法的任何用户都希望获取异步进行,而您当前的实现没有这样做

您可以创建一个任务来执行检索:

return Task.Run(() => UserRetriever.GetUser(userId));

尽管这仍然有阻塞的问题。

您的代码似乎不是异步的,为什么您要尝试表现得像异步的一样呢?
return Task.Run(() => UserRetriever.GetUser(userId));