System.IAsyncDisposable – rozhraní
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
V .NET třídy, které vlastní nespravované prostředky, obvykle implementují IDisposable rozhraní, aby poskytoval mechanismus pro vydávání nespravovaných prostředků synchronně. V některých případech ale musí poskytnout asynchronní mechanismus pro uvolnění nespravovaných prostředků kromě synchronního (nebo ne) synchronního. Poskytnutí takového mechanismu umožňuje příjemci provádět operace odstranění náročné na prostředky bez blokování hlavního vlákna aplikace grafického uživatelského rozhraní po dlouhou dobu.
Metoda IAsyncDisposable.DisposeAsync tohoto rozhraní vrátí ValueTask , který představuje asynchronní dispose operace. Třídy, které vlastní nespravované prostředky implementují tuto metodu, a příjemce těchto tříd volá tuto metodu na objekt, pokud už není potřeba.
Asynchronní metody se používají ve spojení s async
klíčovými await
slovy v jazyce C# a Visual Basic. Další informace naleznete v tématu Úloha asynchronní programovací model v jazyce C# nebo Asynchronní programování pomocí Async a Await (Visual Basic).
Použití objektu, který implementuje IAsyncDisposable
Pokud vaše aplikace používá objekt, který implementuje IAsyncDisposable
, měli byste při použití objektu volat implementaci objektu DisposeAsync . Pokud chcete zajistit, aby prostředky byly vydány i v případě výjimky, vložte kód, který používá IAsyncDisposable
objekt do příkazu using (v jazyce C# počínaje verzí 8.0), nebo volejte DisposeAsync metodu uvnitř finally
klauzulefinally
try
/příkazu. Další informace o vzoru najdete v try
/finally
tématu try-finally (C#) nebo Try... Chytit... Finally – příkaz (Visual Basic).
Implementace IAsyncDisposable
V následujících situacích můžete implementovat IAsyncDisposable
:
- Při vývoji asynchronního enumerátoru, který vlastní nespravované prostředky. Asynchronní enumerátory se používají s funkcí asynchronních datových proudů C# 8.0. Další informace o asynchronních datových proudech najdete v kurzu : Generování a využívání asynchronních datových proudů pomocí C# 8.0 a .NET Core 3.0.
- Pokud vaše třída vlastní nespravované prostředky a uvolní je, vyžaduje vstupně-výstupní operaci náročnou na prostředky, například vyprázdnění obsahu zprostředkující vyrovnávací paměti do souboru nebo odeslání paketu přes síť, aby se připojení zavře.
Použijte metodu DisposeAsync k provedení čištění, které je nezbytné po použití nespravovaných prostředků, jako je uvolnění, uvolnění nebo resetování nespravovaných prostředků. Další informace naleznete v tématu Implementace disposeAsync metoda.