IAsyncDisposable.DisposeAsync Método

Definição

Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados de forma assíncrona.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

public:
 System::Threading::Tasks::ValueTask DisposeAsync();
public System.Threading.Tasks.ValueTask DisposeAsync ();
abstract member DisposeAsync : unit -> System.Threading.Tasks.ValueTask
Public Function DisposeAsync () As ValueTask

Retornos

ValueTask

Uma tarefa que representa a operação de descarte assíncrona.A task that represents the asynchronous dispose operation.

Comentários

Use esse método para fechar ou liberar de forma assíncrona recursos não gerenciados, como arquivos, fluxos e identificadores mantidos por uma instância da classe que implementa essa interface.Use this method to asynchronously close or release unmanaged resources such as files, streams, and handles held by an instance of the class that implements this interface. O uso desse método em vez de IDisposable.Dispose permite que você execute uma operação Dispose com uso intensivo de recursos sem bloquear o thread principal de um aplicativo de GUI por muito tempo.Using this method instead of IDisposable.Dispose enables you to perform a resource-intensive dispose operation without blocking the main thread of a GUI application for a long time.

Aviso

Se você estiver usando uma classe que implementa a IAsyncDisposable interface, deverá chamar sua DisposeAsync implementação quando terminar de usar a classe.If you are using a class that implements the IAsyncDisposable interface, you should call its DisposeAsync implementation when you are finished using the class. Para obter mais informações, consulte a seção "usando um objeto que implementa IAsyncDisposable" no IAsyncDisposable tópico.For more information, see the "Using an object that implements IAsyncDisposable" section in the IAsyncDisposable topic.

Ao implementar esse método, verifique se todos os recursos mantidos são liberados propagando a chamada por meio da hierarquia de confinamento.When implementing this method, ensure that all held resources are freed by propagating the call through the containment hierarchy. Por exemplo, se um objeto A alocar um objeto B e o objeto B alocar um objeto C, A DisposeAsync implementação deve chamar DisposeAsync em B, que, por sua vez, deve chamar DisposeAsync c. Um objeto também deve chamar o DisposeAsync método de sua classe base se a classe base for implementada IAsyncDisposable .For example, if an object A allocates an object B, and object B allocates an object C, then A's DisposeAsync implementation must call DisposeAsync on B, which must in turn call DisposeAsync on C. An object must also call the DisposeAsync method of its base class if the base class implements IAsyncDisposable.

Se o método de um objeto DisposeAsync for chamado mais de uma vez, o objeto deverá ignorar todas as chamadas após a primeira e, de forma síncrona, retornará uma concluída com êxito ValueTask .If an object's DisposeAsync method is called more than once, the object must ignore all calls after the first one and synchronously return a successfully completed ValueTask. O objeto não deve lançar uma exceção se seu DisposeAsync método for chamado várias vezes.The object must not throw an exception if its DisposeAsync method is called multiple times. Métodos de instância diferentes do DisposeAsync podem gerar um ObjectDisposedException quando os recursos já estão descartados.Instance methods other than DisposeAsync can throw an ObjectDisposedException when resources are already disposed.

Aplica-se a