Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnictví | Hodnota |
|---|---|
| Identifikátor pravidla | CA2025 |
| Titul | Nepředávejte instance IDisposable do nezablokovaných úloh. |
| Kategorie | Spolehlivost |
| Oprava je destruktivní nebo nedestruktivní | Nezlomitelný |
| Povoleno ve výchozím nastavení v rozhraní .NET 10 | Ne |
Příčina
Instance IDisposable se předá do nezařazené úlohy a potenciálně se vyřadí před dokončením úkolu pomocí instance.
Popis pravidla
Nezařazené úlohy, které používají IDisposable instance, můžou tyto instance používat dlouho po jejich vyřazení. Ujistěte se, že úlohy využívající tyto instance jsou dokončeny před tím, než budou instance odstraněny.
Příklady
Následující fragmenty kódu (a jejich ekvivalenty jazyka Visual Basic) jsou porušení ca2025:
public Task DoSomethingAsync()
{
// Using statements and using blocks can both be violations.
using (var disposable = new DisposableThing())
{
return DoSomethingInternalAsync(disposable);
}
}
public async Task DoThingsAsync()
{
var disposable = new DisposableThing();
var task = DoSomethingInternalAsync(disposable);
// More code here.
dispose.Dispose();
// It's a violation if arguments are disposed before the task is awaited.
await task.ConfigureAwait(false);
}
Kdy potlačit upozornění
Potlačit tato upozornění, pokud víte, že úkoly se dokončí pomocí IDisposable instancí před jejich odstraněním.
Potlačte upozornění
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 CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.