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


System.IAsyncDisposable interfész

Ez a cikk kiegészítő megjegyzéseket tartalmaz az API referenciadokumentációjához.

A .NET-ben a nem felügyelt erőforrásokat tartalmazó osztályok általában implementálják az IDisposable interfészt, hogy szinkron módon oldják fel a nem felügyelt erőforrásokat. Bizonyos esetekben azonban a szinkron helyett (vagy helyett) aszinkron mechanizmust kell biztosítaniuk a nem felügyelt erőforrások felszabadításához. Az ilyen mechanizmus lehetővé teszi a fogyasztó számára, hogy erőforrás-igényes ártalmatlanítási műveleteket hajtson végre anélkül, hogy hosszú ideig blokkolnák a grafikus felhasználói felületű alkalmazások fő szálát.

Ennek IAsyncDisposable.DisposeAsync az interfésznek a metódusa az ValueTask aszinkron elidegenítési műveletet képviselő értéket adja vissza. A nem felügyelt erőforrásokat tartalmazó osztályok implementálják ezt a módszert, és az osztályok felhasználója meghívja ezt a metódust egy objektumra, amikor már nincs rá szükség.

Az aszinkron metódusok a C# és await a async Visual Basic kulcsszavaival együtt használatosak. További információ: A feladat aszinkron programozási modellje C# vagy Aszinkron programozás Async és Await használatával (Visual Basic).

Az IAsyncDisposable-t implementáló objektum használata

Ha az alkalmazás implementálható IAsyncDisposableobjektumot használ, akkor a használat befejezésekor meg kell hívnia az objektum implementációját DisposeAsync . Annak érdekében, hogy az erőforrások kivétel esetén is felszabaduljanak, helyezze az objektumot használó IAsyncDisposable kódot a használati utasításba (a 8.0-s verziótól kezdve C#-ban), vagy hívja meg a DisposeAsync metódust az try/finally utasítás záradékában.finally A mintával kapcsolatos további információkért lásd: tryfinally/try-finally (C#) vagy Try... Fogás... Végül utasítás (Visual Basic).

IAsyncDisposable implementálása

A következő helyzetekben implementálhatja IAsyncDisposable a következőket:

  • A nem felügyelt erőforrásokat birtokló aszinkron enumerátor fejlesztésekor. Az aszinkron enumerátorok a C# 8.0 aszinkron streamek funkcióval használhatók. Az aszinkron streamekről további információt a C# 8.0 és a .NET Core 3.0 használatával készült aszinkron streamek létrehozása és felhasználása című oktatóanyagban talál.
  • Ha az osztály nem felügyelt erőforrásokat birtokol, és azok felszabadításához erőforrás-igényes I/O-művelet szükséges, például egy köztes puffer tartalmának kiürítése egy fájlba, vagy csomag küldése hálózaton keresztül egy kapcsolat bezárásához.

A metódussal elvégezheti a DisposeAsync nem felügyelt erőforrások használata után szükséges tisztítást, például a nem felügyelt erőforrások felszabadítását, felszabadítását vagy alaphelyzetbe állítását. További információ: DisposeAsync metódus implementálása.