我很好奇为什么 ASP.net MVC 网站模板使用 ASP.net Identity 的异步方法?他们似乎没有做任何可以从使用异步方法中获益的事情。
例如,为什么使用:
IdentityResult result =
await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
代替:
IdentityResult result =
UserManager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
他们不是在做同样的事情吗?在这两种情况下,您都在等待 IdentityResult
,然后再继续下一行代码,对吗?
最佳答案
正确,您正在等待 RemoveLoginAsync 返回,然后再执行下一行代码。但是,这样做有好处......
当 RemoveLoginAsync 正在执行时,它不会锁定线程(因为它是异步的)。因此,以第二个示例为例,如果您的应用程序有 4 个可用线程,并且有 4 个请求进入,所有请求都在等待同步调用,那么其他请求将在它们被处理之前进入队列。
但是如果您在等待时有一个异步调用,那么它会释放该线程来处理更多请求。
关于c# - 为什么默认 MVC 站点使用异步 ASP.net 标识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525800/