async-await - 在 Azure Functions 中等待异步调用时,ConfigureAwait(false) 是否需要/有益

标签 async-await azure-functions azure-functions-runtime synchronizationcontext azure-function-async

一般推荐使用ConfigureAwait(false)在不需要上下文的情况下等待异步调用时。只是想知道使用 ConfigureAwait(false) 有什么好处吗?在 Azure 函数中。

Azure Function 线程是否具有非空值 SynchronizationContext因此,使用 ConfigureAwait(false) 将是有益的。以避免不必要地捕获它并将等待继续重新安排回捕获的 SynchronizationContext ?

添加 ConfigureAwait(false) 有点麻烦在每次异步调用结束时,如果没有性能/或任何其他相关增益,那么最好避免在 Azure Functions 中运行的代码中使用它。

查看azure函数主机代码:
https://github.com/Azure/azure-functions-host/blob/918b057707acfb842659c9dad3cef0193fae1330/src/WebJobs.Script.WebHost/WebScriptHostManager.cs#L181

似乎 azure 函数主机试图在调用 azure 函数之前去除 ASP.NET SynchronizationContext。

最佳答案

Just wondering is there any benefit of using ConfigureAwait(false) in Azure Functions.



如果您的代码知道它在该上下文中运行,则不会。

在我的 Azure Functions 代码中,我将其分为单独的库项目中的“library-ish”代码和“Azure Functions”代码。我确实使用 ConfigureAwait(false)在图书馆项目中,因为它们可以(至少在理论上)在其他应用程序中重用。

但是对于知道它在 Azure Functions 中运行的代码,没有 ConfigureAwait(false)是必要的。 v1 主机会去掉 SynchronizationContext ,并且 v2 主机在没有上下文的 ASP.NET Core 上运行。

关于async-await - 在 Azure Functions 中等待异步调用时,ConfigureAwait(false) 是否需要/有益,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542016/

相关文章:

asynchronous - Kotlin:将 "normal"函数转换为阻塞挂起函数对性能有何影响?

c# - 何时使用 await 关键字

c# - 使用 async/await、RX 和 LINQ 进行异步消息处理

Javascript : promise chain vs. 异步/等待?

c# - 如何在Azure函数的自定义HTTP路由中指定查询参数?

node.js - 启用 session 的函数应用的 Azure 服务总线触发器 - Node.js

azure - 尝试获取诊断事件时遇到 StorageException

具有多个输出到服务总线的 C# Azure 函数

azure-functions - 了解 Azure Functions 高级计划计费

azure - 添加本地计算机作为 Azure Function Worker