Megosztás a következőn keresztül:


CA2025: Ne adja át az "IDisposable" példányokat a nem támogatott feladatoknak

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.