我有一些C#代码,我实际上移植到 VB.Net。现在我注意到ConfigureAwait(false)到处都在使用。要求是代码依赖于 .Net 4.0
如您所知...ConfigureAwait(false) 出现在 .Net 4.5 中。如何将以下代码转换为符合 .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.异步
准确地说,这就是您正在寻找的内容。
如果你正在使用 ConfigureAwait(),你可能真的很关心它并希望它真正工作。遗憾的是,由于异步方法实际上可能同步完成,因此对 ConfigureAwait() 的调用可能不会影响任何内容。这意味着您还必须将其放在下一个异步调用中,依此类推,直到它出现在库中的每个方法上。
参考Microsoft开发人员
配置 await 的替代方法
示例代码