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

时间:2014-05-07 18:44:04

标签: 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));

而不是:

IdentityResult result = 
    UserManager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));

Aren他们做的完全一样吗?在这两个实例中,您都在等待IdentityResult,然后继续下一行代码,对吗?

1 个答案:

答案 0 :(得分:7)

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

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

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