async/await'te ConfigureAwait Tartışması Hâlâ Bitmedi
ASP.NET Core'da varsayılan ile kütüphane kodu aynı değil

Eski WinForms/WPF alışkanlığı: UI thread'e geri dönmemek için ConfigureAwait(false). ASP.NET Core'da SynchronizationContext yok (varsayılan). Request kodunda false ezberi gürültü.
Kütüphane paketinde hâlâ anlamlı. Paketin nerede çağrılacağını bilemezsin. UI uygulaması referans alabilir. Orada false, deadlock riskini azaltır.
// Kütüphane kodu
public async Task ReadAllAsync(Stream stream, CancellationToken ct)
{
using var reader = new StreamReader(stream, leaveOpen: true);
return await reader.ReadToEndAsync(ct).ConfigureAwait(false);
}
// ASP.NET endpoint — bağlam zaten thread pool
app.MapGet("/health", async (IHostEnvironment env) =>
{
await Task.Delay(10);
return Results.Ok(env.EnvironmentName);
});
.GetAwaiter().GetResult() ile karıştırmayın. Sync-over-async deadlock'u ConfigureAwait'den ayrı, daha pahalı bir hata. Endpoint'te Result veya Wait yok. Kütüphanede false var, uygulama kodunda yok. Ezber bu kadar.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap