gpt4 book ai didi

c# - HttpMessageHandler 应该使用 ConfigureAwait(false)

转载 作者:行者123 更新时间:2023-11-30 14:47:27 24 4
gpt4 key购买 nike

如果我在 HttpMessageHandler 中有一个异步调用,它是否应该使用 .ConfigureAwait 方法,例如

/// <summary>
/// Handler to assign the MD5 hash value if content is present
/// </summary>
public class RequestContentMd5Handler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Content == null)
{
return await base.SendAsync(request, cancellationToken);
}

await request.Content.AssignMd5Hash().ConfigureAwait(false);

var response = await base.SendAsync(request, cancellationToken);

return response;
}
}

最佳答案

当等待代码之后的代码不需要返回到同步上下文提供的上下文时,您应该始终使用ConfigureAwait(false)

/// <summary>
/// Handler to assign the MD5 hash value if content is present
/// </summary>
public class RequestContentMd5Handler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
if (request.Content != null)
{
await request.Content.AssignMd5Hash().ConfigureAwait(false);
}

return await base.SendAsync(request, cancellationToken);
}
}

关于c# - HttpMessageHandler 应该使用 ConfigureAwait(false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com