Operações assíncronas

As operações de banco de dados podem levar um tempo significativo para serem concluídas. Para manter uma interface do usuário responsiva ou evitar o bloqueio de um thread de solicitação, use métodos de banco de dados assíncronos em vez de aguardar de forma síncrona para que um comando seja concluído.

Instale o pacote NuGet Microsoft.Data.SqlClient para código do cliente SQL. Para novos aplicativos, use OpenAsync e os métodos ExecuteNonQueryAsync, ExecuteReaderAsync e ExecuteXmlReaderAsync com await. Esses métodos executam E/S (entrada/saída) assíncrona sem exigir que você crie um thread em segundo plano.

Microsoft.Data.SqlClient também dá suporte aos padrões de retorno de chamada, manipulador de espera e sondagem descritos nesta seção. Os métodos BeginExecuteNonQuery, BeginExecuteReader e BeginExecuteXmlReader fazem par com EndExecuteNonQuery, EndExecuteReader e EndExecuteXmlReader. Não adicione Asynchronous Processing=true ao cadeia de conexão; Microsoft. Data.SqlClient não dá suporte a essa palavra-chave.

Observação

Para novo código, use o padrão assíncrono baseado em tarefa. Os exemplos nesta seção mostram o padrão compatível Begin/End para aplicativos que necessitam de retornos de chamada, mecanismos de espera ou sondagem.

Mantenha cada conexão e comando ativos até que sua operação seja concluída. Observe as exceções ao chamar o método correspondente End ou ao aguardar a tarefa. Em um aplicativo para desktop, atualize os controles apenas a partir da thread da interface do usuário.

Nesta seção

Aplicativos do Windows usando retornos de chamada Fornece um exemplo demonstrando como executar um comando assíncrono com segurança, manipulando corretamente a interação com um formulário e seu conteúdo de um thread separado.

Aplicativos ASP.NET usando handles de espera Fornece um exemplo demonstrando como executar vários comandos simultâneos de uma página ASP.NET, usando handles de espera para gerenciar a operação ao serem concluídos todos os comandos.

Sondagem em aplicativos de console Fornece um exemplo que demonstra o uso da sondagem para aguardar a conclusão de uma execução de comando assíncrona de um aplicativo de console. Essa técnica também é válida em uma biblioteca de classes ou outro aplicativo sem uma interface do usuário.

Consulte também