通常建议在ConfigureAwait(false)
不需要上下文时等待异步调用时使用。只是想知道ConfigureAwait(false)
在 Azure Functions中使用有什么好处。
Azure 函数线程是否具有非空值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。
synchronizationcontext async-await azure-functions azure-functions-runtime azure-function-async
我意识到Microsoft Graph .Net SDK正在使用HttpClient
类.
https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph.Core/Requests/HttpProvider.cs
Run Code Online (Sandbox Code Playgroud)
Microsoft自己的文档建议HttpClient
尽可能多地重用实例,而不是每个请求启动一个新实例,这可能会导致SocketException
最终耗尽连接池.
是否有类似的建议,GraphServiceClient
尽可能多地重用?实例化GraphServiceClient
每个请求有什么特别的问题吗?