Operaciones asincrónicas

Las operaciones de base de datos pueden tardar mucho tiempo en completarse. Para mantener una interfaz de usuario con capacidad de respuesta o evitar el bloqueo de un subproceso de solicitud, use métodos de base de datos asincrónicos en lugar de esperar sincrónicamente para que finalice un comando.

Instale el paquete NuGet Microsoft.Data.SqlClient para el código de cliente SQL. Para las nuevas aplicaciones, use OpenAsync y los métodos ExecuteNonQueryAsync, ExecuteReaderAsync y ExecuteXmlReaderAsync con await. Estos métodos realizan entradas y salidas asincrónicas (E/S) sin necesidad de crear un subproceso en segundo plano.

Microsoft. Data.SqlClient también admite los patrones de devolución de llamada, identificador de espera y sondeo descritos en esta sección. Los BeginExecuteNonQuerymétodos , BeginExecuteReadery BeginExecuteXmlReader se emparejan con EndExecuteNonQuery, EndExecuteReadery EndExecuteXmlReader. No agregue Asynchronous Processing=true al cadena de conexión; Microsoft. Data.SqlClient no admite esa palabra clave.

Nota:

Para el nuevo código, use el patrón asincrónico basado en tareas. Los ejemplos de esta sección muestran el patrón admitido Begin/End para las aplicaciones que necesitan devoluciones de llamada, identificadores de espera o sondeo.

Mantenga activa cada conexión y comando hasta que se complete su operación. Observe las excepciones al llamar al método End correspondiente o al esperar la tarea. En una aplicación de escritorio, actualice los controles solo desde el subproceso de la interfaz de usuario.

En esta sección

Aplicaciones de Windows mediante callbacks Proporciona un ejemplo que muestra cómo ejecutar un comando asincrónico de forma segura, controlando correctamente la interacción con un formulario y su contenido desde un hilo separado.

aplicaciones de ASP.NET mediante identificadores de espera Proporciona un ejemplo que muestra cómo ejecutar varios comandos simultáneos desde una página de ASP.NET, mediante identificadores de espera para administrar la operación al finalizar todos los comandos.

Sondeo en aplicaciones de consola Proporciona un ejemplo que muestra el uso del sondeo para esperar a que se complete una ejecución de comandos asincrónica desde una aplicación de consola. Esta técnica también es válida en una biblioteca de clases u otra aplicación sin una interfaz de usuario.

Consulte también