Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
CA2261: Non usare
| Proprietà | valore |
|---|---|
| ID regola | CA2261 |
| Title | Non usare ConfigureAwaitOptions.SuppressThrowing con Task<TResult> |
| Categoria | Utilizzo |
| La correzione causa un'interruzione o meno | Non causa un'interruzione |
| Abilitato per impostazione predefinita in .NET 10 | Come avviso |
Causa
Un valore di ConfigureAwaitOptions.SuppressThrowing viene passato a Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Descrizione regola
L'opzione ConfigureAwaitOptions.SuppressThrowing non è supportata dall'oggetto generico Task<TResult>, perché potrebbe causare la restituzione di un oggetto non valido TResult. Questa regola contrassegna l'uso di SuppressThrowing con Task<TResult> per visualizzare l'errore in fase di compilazione anziché in fase di esecuzione.
Come correggere le violazioni
Eseguire il cast di a un oggetto non generico Task<TResult> prima di Task chiamare ConfigureAwait(ConfigureAwaitOptions).
Esempio
Il frammento di codice seguente mostra una violazione di CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Il frammento di codice seguente mostra la correzione:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Quando eliminare gli errori
Non è consigliabile eliminare gli avvisi da questa regola. Se l'attività è difettosa o annullata, TResult non sarà valida e causerà errori di runtime.