替代ConfigureAwait

时间:2018-07-10 07:03:09

标签: c# async-await task-parallel-library configureawait

我有一些我实际移植到VB.Net的C#代码。现在我注意到ConfigureAwait(false)随处可见。要求代码必须依赖于.Net 4.0

您可能知道... .NET 4.5中出现ConfigureAwait(false)。如何将以下代码转换为与.Net 4.0兼容?

是否存在通用解决方案,因为代码中到处都有ConfigureAwait

 public async Task<ListResponse> GetResponseAsync(ListRequest request = null)
        {
            request =  request ?? new ListRequest
            {
                Limit = _limit
            };

            using (var client = CreateMailClient("lists"))
            {
                var response = await client.GetAsync(request.ToQueryString()).ConfigureAwait(false);
                await response.EnsureSuccessMailChimpAsync().ConfigureAwait(false);

                var listResponse = await response.Content.ReadAsAsync<ListResponse>().ConfigureAwait(false);
                return listResponse;
            }
        }

答案: 参考Microsoft.BCL.Async

1 个答案:

答案 0 :(得分:0)

这就是您要寻找的精确的东西。

如果您正在使用ConfigureAwait(),则可能真的很在意它,并希望它能够实际运行。不幸的是,由于异步方法实际上可能是同步完成的,因此对ConfigureAwait()的调用可能不会影响任何事情。这意味着您也必须将它放在下一个异步调用上,依此类推,直到它出现在库中的每个方法上。

  

参考Microsoft开发人员

Alternatives to Configure await

Sample code