IAsyncDisposable Interface

Definição

Fornece um mecanismo para liberar recursos não gerenciados de forma assíncrona.

public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
Derivado

Comentários

No .NET, as classes que possuem recursos não gerenciados geralmente implementam a IDisposable interface para fornecer um mecanismo para liberar recursos não gerenciados de forma síncrona. No entanto, em alguns casos, eles precisam fornecer um mecanismo assíncrono para liberar recursos não gerenciados além do (ou em vez de) do síncrono. Fornecer esse mecanismo permite que o consumidor execute operações de descarte com uso intensivo de recursos sem bloquear o thread main de um aplicativo gui por um longo tempo.

O IAsyncDisposable.DisposeAsync método dessa interface retorna um ValueTask que representa a operação de descarte assíncrono. Classes que possuem recursos não gerenciados implementam esse método e o consumidor dessas classes chama esse método em um objeto quando ele não é mais necessário.

Os métodos assíncronos são usados em conjunto com as async palavras-chave e await em C# e Visual Basic. Para obter mais informações, consulte O modelo de programação assíncrona task em C# ou Programação assíncrona com Async e Await (Visual Basic).

Usando um objeto que implementa IAsyncDisposable

Se o aplicativo usar um objeto que implementa IAsyncDisposable, você deverá chamar a implementação do DisposeAsync objeto quando terminar de usá-lo. Para garantir que os recursos sejam liberados mesmo no caso de uma exceção, coloque o código que usa o IAsyncDisposable objeto na instrução using (em C# a partir da versão 8.0) ou chame o DisposeAsync método dentro de uma finally cláusula da try/finally instrução . Para obter mais informações sobre o try/finally padrão, consulte try-finally (C#) ou Try... Pegar... Instrução Finally (Visual Basic).

Implementando IAsyncDisposable

Você pode implementar IAsyncDisposable nas seguintes situações:

  • Ao desenvolver um enumerador assíncrono que possui recursos não gerenciados. Enumeradores assíncronos são usados com o recurso de fluxos assíncronos C# 8.0. Para obter mais informações sobre fluxos assíncronos, consulte Tutorial: Gerar e consumir fluxos assíncronos usando o C# 8.0 e o .NET Core 3.0.

  • Quando sua classe possui recursos não gerenciados e liberá-los requer uma operação de E/S com uso intensivo de recursos, como liberar o conteúdo de um buffer intermediário em um arquivo ou enviar um pacote por uma rede para fechar uma conexão.

Use o DisposeAsync método para executar qualquer limpeza necessária depois de usar os recursos não gerenciados, como liberar, liberar ou redefinir os recursos não gerenciados. Para obter mais informações, consulte Implementar um método DisposeAsync.

Métodos

DisposeAsync()

Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados de forma assíncrona.

Métodos de Extensão

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono são realizadas.

Aplica-se a