CA2261: Verwenden Sie ConfigureAwaitOptions.SuppressThrowing nicht mit Task<TResult>

Eigenschaft Wert
Regel-ID CA2261
Titel Verwenden Sie ConfigureAwaitOptions.SuppressThrowing nicht mit Task<TResult>
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Warnung

Ursache

Ein Wert von ConfigureAwaitOptions.SuppressThrowing wird an Task<TResult>.ConfigureAwait(ConfigureAwaitOptions) übergeben.

Regelbeschreibung

Die ConfigureAwaitOptions.SuppressThrowing-Option wird von der generischen Task<TResult> nicht unterstützt, da dies zu einer ungültigen TResult-Wiedergabe führen kann. Diese Regel kennzeichnet die Verwendung von SuppressThrowing mit Task<TResult> zum Anzeigen des Fehlers zur Buildzeit statt zur Laufzeit.

Behandeln von Verstößen

Wandeln Sie die Task<TResult> in eine nicht-generische Task um, bevor Sie ConfigureAwait(ConfigureAwaitOptions) aufrufen.

Beispiel

Der folgende Codeschnipsel zeigt einen Verstoß gegen CA2261:

Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

Der folgende Codeausschnitt zeigt die Korrektur:

Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

Fälle für die Unterdrückung von Warnungen

Sie sollten Warnungen vor dieser Regel nicht unterdrücken. Wenn die Aufgabe fehlerhaft oder abgebrochen wird, wird TResult ungültig und verursacht Laufzeitfehler.