É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"; }}Quand l’utiliser
Section intitulée « Quand l’utiliser »- Dans le code de bibliothèque qui n’a pas besoin de revenir au contexte d’origine.
- Pour éviter les interblocages lorsque
.Resultou.Wait()sont utilisés (bien que ceux‑ci devraient être évités).
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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