Zpět na blog
C#

C# pro juniory: async/await bez tajemství

3 min čtení

Jak funguje `async`/`await` v C#, proč nikdy `.Result` a jak se vyhnout deadlockům.

Základ

public async Task<Kurz> NajdiAsync(int id) {
    return await _db.Kurzy.FindAsync(id);
}

await neblokuje vlákno — uvolní ho zpět do poolu.

Nikdy .Result a .Wait()

V ASP.NET Core způsobují deadlocky a zabijí throughput.

ConfigureAwait(false) v knihovnách

V knihovnách používejte, v aplikačním kódu není potřeba.

Paralelismus

var t1 = KurzyAsync();
var t2 = LektoriAsync();
await Task.WhenAll(t1, t2);

CancellationToken

Vždy přijímejte a předávejte dál — uživatel zavře stránku, request se zruší.

Podrobně v našem intenzivním školení C# / .NET.