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ó IAsyncDisposable
objektumot 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: try
finally
/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.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: