gpt4 book ai didi

c# - 如何在 C# 中进行异步调用以同步运行

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:40 25 4
gpt4 key购买 nike

我有这个代码

ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password)

我希望这段代码同步运行,因为我的下一条语句依赖于此。大多数情况下,下面的调用都会失败,因为用户为空。

var roles = await userManager.GetRolesAsync(user.Id);

有什么建议吗?

最佳答案

代码没有问题。 await 表示仅在 后面的异步方法完成后才继续执行。这意味着在这个片段中:

var user = await userManager.FindAsync(context.UserName, context.Password)
var roles = await userManager.GetRolesAsync(user.Id);

GetRolesAsync 的调用将仅在 上一行完成后执行。

来自 UserManager.FindAsync 的文档

Returns a user with the specified username and password or null if there is no match.

用户名或密码错误。只需向最终用户返回一条消息,要求他们重试。如果您使用存储的凭据进行此调用,请再次检查它们。

在任何情况下,您都需要在尝试使用 user 值之前检查身份验证是否失败,例如:

var user = await userManager.FindAsync(context.UserName, context.Password)
if (user == null)
{
//Somehow report failure, decrement retry counters, etc
retries--;
return false;
}
else
{
var roles = await userManager.GetRolesAsync(user.Id);
....
}

关于c# - 如何在 C# 中进行异步调用以同步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com