Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2247 |
Název | Argument předaný konstruktoru TaskCompletionSource by měl být výčet TaskCreationOptions, nikoli výčet TaskContinuationOptions |
Kategorie | Využití |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako upozornění |
System.Threading.Tasks.TaskCompletionSource
Vytvoření výčtové System.Threading.Tasks.TaskContinuationOptions hodnoty místo výčtové System.Threading.Tasks.TaskCreationOptions hodnoty
Použití System.Object.ReferenceEquals metody k otestování jednoho nebo více typů hodnot pro rovnost.
TaskCompletionSource typ má konstruktor, který přijímá hodnotu výčtu System.Threading.Tasks.TaskCreationOptions a jiný konstruktor, který přijímá .Object Náhodné předání hodnoty výčtu System.Threading.Tasks.TaskContinuationOptions místo hodnoty výčtu System.Threading.Tasks.TaskCreationOptions způsobí volání konstruktoru založeného na parametru Object: bude kompilován a spuštěn, ale nebude mít zamýšlené chování.
Chcete-li opravit porušení, nahraďte hodnotu výčtu System.Threading.Tasks.TaskContinuationOptions odpovídající System.Threading.Tasks.TaskCreationOptions hodnotou výčtu.
// Violation
var tcs = new TaskCompletionSource<int>(TaskContinuationOptions.RunContinuationsAsynchronously);
// Fixed
var tcs = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
Porušení tohoto pravidla téměř vždy zvýrazní chybu ve volajícím kódu, aby se kód nechoval podle očekávání vývojáře, přičemž TaskCompletionSource efektivně ignoruje zadanou možnost. Jediný čas, kdy je bezpečné potlačit upozornění, je, pokud vývojář skutečně chtěl předat pole jako System.Threading.Tasks.TaskContinuationOptions argument stavu objektu do TaskCompletionSource
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA2247
// The code that's violating the rule is on this line.
#pragma warning restore CA2247
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA2247.severity = none
Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none
hodnotu v konfiguračním souboru.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu..
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
Zaregistrovat