Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
En .NET, las clases que poseen recursos no administrados suelen implementar la IDisposable interfaz para proporcionar un mecanismo para liberar recursos no administrados de forma sincrónica. Sin embargo, en algunos casos deben proporcionar un mecanismo asincrónico para liberar recursos no administrados además de (o en lugar de) el sincrónico. Proporcionar este mecanismo permite al consumidor realizar operaciones de eliminación intensivas de recursos sin bloquear el subproceso principal de una aplicación de GUI durante mucho tiempo.
El método IAsyncDisposable.DisposeAsync de esta interfaz devuelve un ValueTask que representa la operación de eliminación asincrónica. Las clases que poseen recursos no administrados implementan este método y el consumidor de estas clases llama a este método en un objeto cuando ya no es necesario.
Los métodos asincrónicos se usan junto con las async
palabras clave y await
en C# y Visual Basic. Para obtener más información, vea El modelo de programación asincrónica de tareas en C# oprogramación asincrónica con Async y Await (Visual Basic).
Uso de un objeto que implementa IAsyncDisposable
Si su aplicación utiliza un objeto que implementa IAsyncDisposable
, debe llamar a la implementación del objeto DisposeAsync cuando haya terminado de usarlo. Para asegurarse de que los recursos se liberan incluso en caso de una excepción, coloque el código que usa el IAsyncDisposable
objeto en la instrucción using (en C# a partir de la versión 8.0) o llame al DisposeAsync método dentro de una finally
cláusula de la try
/finally
instrucción . Para obtener más información sobre el patrón de diseño try
/finally
, vea try-finally (C#) o Try...Catch...Finally Statement (Visual Basic).
Implementación de IAsyncDisposable
Puede implementar IAsyncDisposable
en las situaciones siguientes:
- Al desarrollar un enumerador asincrónico que posee recursos no administrados. Los enumeradores asincrónicos se usan con la característica de secuencias asincrónicas de C# 8.0. Para obtener más información sobre las secuencias asincrónicas, consulte Tutorial: Generación y consumo de flujos asincrónicos mediante C# 8.0 y .NET Core 3.0.
- Cuando su clase posee recursos no administrados y los libera requiere una operación de E/S intensiva de recursos, como vaciar el contenido de un búfer intermedio en un archivo o enviar un paquete a través de una red para cerrar una conexión.
Use el DisposeAsync método para realizar cualquier limpieza necesaria después de usar los recursos no administrados, como liberar, liberar o restablecer los recursos no administrados. Para obtener más información, consulte Implementación de un método DisposeAsync.