Aller au contenu

Utilisation dans le code de bibliothèque

Contexte : Le code de bibliothèque doit utiliser ConfigureAwait(false) pour toutes les instructions await sauf s’il a explicitement besoin de reprendre sur le contexte d’origine.

using System.Net.Http;
using System.Threading.Tasks;
public class ApiClient
{
private readonly HttpClient _httpClient = new HttpClient();
public async Task<string> ReadDataAsync(string url)
{
// ConfigureAwait(false) pour tous les awaits dans le code de bibliothèque
string content = await _httpClient.GetStringAsync(url).ConfigureAwait(false);
return await ProcessAsync(content).ConfigureAwait(false);
}
private async Task<string> ProcessAsync(string data)
{
await Task.Delay(10).ConfigureAwait(false);
return data.ToUpper();
}
}
  • Évite les interblocages lorsque la bibliothèque est utilisée depuis des applications UI.
  • Améliore les performances en réduisant les changements de contexte inutiles.

Paquets NuGet : Les bibliothèques bien écrites comme Newtonsoft.Json utilisent ConfigureAwait(false) en interne.

Exemple : Recommandations pour le runtime .NET