调用可等待方法时是否真的需要添加 .ConfigureAwait 调用?
Is it really necessary to add .ConfigureAwait call when calling an awaitable method?
我正在使用带有代码验证的 Visual Studio 2019 开发应用程序。
一些代码验证提示很重要,但是,我在可等待的方法调用中得到了很多提示,例如
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId());
在这种情况下,系统建议我输入
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId()).ConfigureAwait(true);
或
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId()).ConfigureAwait(false);
真的有必要这样脏代码吗?
这是一个 MVC5 ASP.NET 应用程序。
问候
海梅
Is it really necessary to dirty the code in such a way?
如果你do not block,那么你就不需要ConfigureAwait(false)
。
在一般情况下,ConfigureAwait(false)
is recommended因为大多数代码不知道它的调用者是否会阻塞。但是,如果此代码是您的应用程序的一部分(即,不是库),并且您确信您的应用程序不会阻塞异步代码,那么您可以跳过 ConfigureAwait(false)
.
Stephen Toub 最近发表了 ConfigureAwait FAQ。
我正在使用带有代码验证的 Visual Studio 2019 开发应用程序。
一些代码验证提示很重要,但是,我在可等待的方法调用中得到了很多提示,例如
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId());
在这种情况下,系统建议我输入
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId()).ConfigureAwait(true);
或
var appUser = await UserManager.FindByIdAsync(User.Identity.GetUserId()).ConfigureAwait(false);
真的有必要这样脏代码吗?
这是一个 MVC5 ASP.NET 应用程序。
问候 海梅
Is it really necessary to dirty the code in such a way?
如果你do not block,那么你就不需要ConfigureAwait(false)
。
在一般情况下,ConfigureAwait(false)
is recommended因为大多数代码不知道它的调用者是否会阻塞。但是,如果此代码是您的应用程序的一部分(即,不是库),并且您确信您的应用程序不会阻塞异步代码,那么您可以跳过 ConfigureAwait(false)
.
Stephen Toub 最近发表了 ConfigureAwait FAQ。