CancellationToken nicht schlucken

CancellationToken nicht schlucken

- Matt

Der häufigste Fehler im Umgang mit CancellationToken ist, ihn entgegenzunehmen und dann nicht weiterzugeben:

public async Task<List<Kunde>> Laden(CancellationToken token)
    => await _ctx.Kunden.ToListAsync();   // Token fehlt

Der Aufrufer kann abbrechen, es passiert aber nichts, weil die eigentliche Arbeit den Abbruch nie erfährt. Das fällt erst auf, wenn ein Nutzer eine Anfrage abbricht und der Server trotzdem dreißig Sekunden weiterarbeitet.

Dagegen hilft ein Analyzer:

<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" PrivateAssets="all" />

Er meldet unter anderem genau diese Fälle, dazu blockierende Aufrufe wie .Result in asynchronem Code.