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 zu Unterbrechungen oder bleibt funktionsfähig | Untrennbar |
| Standardmäßig in .NET 10 aktiviert | Als Warnung |
| Anwendbare Sprachen | C# und Visual Basic |
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.
So beheben Sie Verstöße
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);
Wann Fehler unterdrücken
Sie sollten Warnungen vor dieser Regel nicht unterdrücken. Wenn die Aufgabe fehlerhaft oder abgebrochen wird, ist TResult ungültig und verursacht Laufzeitfehler.