CA2261: Ne használja ConfigureAwaitOptions.SuppressThrowing a következővel: Task<TResult>

Tulajdonság Érték
Szabályazonosító CA2261
Cím Ne használja a következővel ConfigureAwaitOptions.SuppressThrowing : Task<TResult>
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Figyelmeztetésként

Ok

A függvény ConfigureAwaitOptions.SuppressThrowing egy értéket ad át a függvénynek Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).

Szabály leírása

A ConfigureAwaitOptions.SuppressThrowing beállítást az általános Task<TResult>nem támogatja, mivel ez érvénytelen TResulteredményhez vezethet. Ez a szabály azt jelzi, hogy a SuppressThrowingTask<TResult> hiba a futtatási idő helyett a buildelési időpontban jelenik meg.

Szabálysértések kijavítása

Task<TResult> A hívás előtt a nem általános Task elemet űzd ConfigureAwait(ConfigureAwaitOptions)el.

Példa

A következő kódrészlet a CA2261 megsértését mutatja be:

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

A következő kódrészlet a javítást mutatja:

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

Mikor kell letiltani a hibákat?

Ne tiltsa le a szabály figyelmeztetéseit. Ha a feladat hibás vagy megszakítva, érvénytelen lesz, TResult és futásidejű hibákat okoz.