Aller au contenu

Éviter de capturer le SynchronizationContext d’origine

Contexte : Par défaut, await capture le SynchronizationContext actuel et y reprend l’exécution. ConfigureAwait(false) évite cela, ce qui peut prévenir les interblocages et améliorer les performances.

using System.Threading.Tasks;
public class LibraryCode
{
public async Task<string> GetDataAsync()
{
// Dans le code de bibliothèque, nous n’avons pas besoin de revenir au contexte d’origine
string result = await FetchAsync().ConfigureAwait(false);
return result;
}
private async Task<string> FetchAsync()
{
await Task.Delay(100);
return "données";
}
}
  • Dans le code de bibliothèque qui n’a pas besoin de revenir au contexte d’origine.
  • Pour éviter les interblocages lorsque .Result ou .Wait() sont utilisés (bien que ceux‑ci devraient être évités).

ASP.NET Core : Dans ASP.NET Core, il n’y a pas de SynchronizationContext, donc ConfigureAwait(false) n’est pas nécessaire mais ne fait pas de mal.

Exemple : FAQ ConfigureAwait