Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ingatlan | Érték |
---|---|
Szabályazonosító | CA2025 |
cím | Ne adja át az "IDisposable" példányokat a nem támogatott feladatoknak |
Kategória | Megbízhatóság |
A javítás törést okoz vagy nem okoz törést | Nem törhető |
Alapértelmezés szerint engedélyezve van a .NET 10 | Nem |
Oka
A rendszer átad egy IDisposable
példányt egy nem használt tevékenységnek, és potenciálisan megsemmisíti őket, mielőtt a feladat befejeződik a példány használatával.
Szabály leírása
A példányokat használó IDisposable
, nem használt feladatok már jóval az elidegenítésük után is használhatják ezeket a példányokat. Győződjön meg arról, hogy az ilyen példányokat használó tevékenységek a példányok megsemmisítése előtt befejeződnek.
Példák
A következő kódrészletek (és azok Visual Basic-megfelelői) a CA2025 megsértései:
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);
}
Mikor kell letiltani a figyelmeztetéseket?
Tiltsa le ezeket a figyelmeztetéseket, ha tudja, hogy a tevékenységek a példányok használata IDisposable
előtt befejeződnek.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.