Condividi tramite


CA2012: Usare Correttamente ValueTasks

Proprietà valore
ID regola CA2012
Title Usare correttamente gli elementi ValueTask
Categoria Affidabilità
La correzione causa un'interruzione o meno Non causa un'interruzione
Abilitato per impostazione predefinita in .NET 9 Come suggerimento

Causa

Un'istanza ValueTask restituita da una chiamata a un membro viene usata in modo da causare eccezioni, danneggiamento o prestazioni scarse.

Descrizione regola

ValueTask Le istanze restituite dalle chiamate ai membri devono essere attese direttamente. I tentativi di utilizzare un valore ValueTask più volte o di accedere direttamente al risultato di uno prima che sia noto che venga completato possono causare un'eccezione o un danneggiamento. Ignorare tale ValueTask è probabilmente un'indicazione di un bug funzionale e può compromettere le prestazioni.

Come correggere le violazioni

In generale, ValueTasks deve essere atteso direttamente anziché scartato o archiviato in altre posizioni, ad esempio variabili locali o campi.

Quando eliminare gli avvisi

Per ValueTask gli oggetti restituiti da chiamate di membri arbitrari, il chiamante deve presupporre che l'oggetto ValueTask deve essere utilizzato (ad esempio, atteso) una sola volta e una sola volta. Tuttavia, se lo sviluppatore controlla anche il membro richiamato e ha una conoscenza completa dell'implementazione, lo sviluppatore potrebbe sapere che è sicuro eliminare l'avviso, ad esempio se il ritorno ValueTask esegue sempre il wrapping di un Task oggetto.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche