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.