Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Fastighet | Värde |
|---|---|
| Regel-ID | CA2025 |
| Titel | Skicka inte "IDisposable"-instanser till ouppvakade uppgifter |
| Kategori | Tillförlitlighet |
| Korrigeringen är antingen brytande eller icke-brytande | Oskiljbar |
| Aktiverad som standard i .NET 10 | Nej |
Orsak
En IDisposable instans skickas till en ouppvakad uppgift och kan tas bort innan aktiviteten är klar med instansen.
Regelbeskrivning
Ouppvakade uppgifter som använder IDisposable instanser kan använda dessa instanser långt efter att de har tagits bort. Se till att uppgifter som använder dessa instanser slutförs innan instanserna tas bort.
Exempel
Följande kodfragment (och deras Visual Basic-motsvarigheter) är överträdelser av 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);
}
När du ska ignorera varningar
Ignorera dessa varningar om du vet att uppgifter slutförs med instanser IDisposable innan de tas bort.
Undertryck en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.