为什么默认MVC站点使用异步ASP.net身份?

Sam*_*Sam 8 c# asp.net asp.net-mvc asp.net-identity

我只是好奇为什么ASP.net MVC网站模板使用ASP.net身份的异步方法?它们似乎没有做任何可以从使用异步方法中受益的东西.

例如,为什么使用:

IdentityResult result = 
    await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
Run Code Online (Sandbox Code Playgroud)

代替:

IdentityResult result = 
    UserManager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
Run Code Online (Sandbox Code Playgroud)

他们不是在做同样的事情吗?在这两种情况下,您都在等待IdentityResult前一行到下一行代码,对吗?

Eri*_*ins 7

正确的是,在执行下一行代码之前,您正在等待RemoveLoginAsync返回.但是,这样做有好处......

当RemoveLoginAsync正在执行时,它不会锁定线程(因为它是异步的).因此,使用第二个示例,如果您的应用程序有4个可用线程,并且有4个请求进入,所有等待同步调用,则其他请求将进入队列,然后才能进行处理.

但是如果你在等待时有一个异步调用,那么它会释放该线程以处理更多请求.