调用可等待方法时是否真的需要添加 .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