Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
CA2261: Verwenden Sie
| 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 10 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>, um den Fehler zur Buildzeit anzuzeigen, 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, ist TResult ungültig und verursacht Laufzeitfehler.