Operações assíncronas
Algumas operações de banco de dados, como execuções de comando, podem demorar significativamente para serem concluídas. Nesses casos, os aplicativos de thread único devem bloquear outras operações e aguardar a conclusão do comando antes de poderem continuar suas próprias operações. Por outro lado, poder atribuir a operação demorada a um thread em segundo plano permite que o thread de primeiro plano permaneça ativo durante toda a operação. Em um aplicativo do Windows, por exemplo, delegar a operação demorada para um thread em segundo plano permite que o thread de interface do usuário permaneça responsivo enquanto a operação está em execução.
O .NET Framework fornece vários padrões de design assíncrono padrão que os desenvolvedores podem usar para aproveitar os threads em segundo plano e liberar a interface do usuário ou os threads de alta prioridade para concluir outras operações. O ADO.NET dá suporte a esses mesmos padrões de design na classe SqlCommand. Especificamente, os métodos BeginExecuteNonQuery, BeginExecuteReader e BeginExecuteXmlReader, emparelhados com os métodos EndExecuteNonQuery, EndExecuteReader e EndExecuteXmlReader, fornecem o suporte assíncrono.
Observação
A programação assíncrona é um recurso principal do .NET Framework, e o ADO.NET aproveita ao máximo os padrões de design padrão. Para obter mais informações sobre as diferentes técnicas assíncronas disponíveis para os desenvolvedores, confira Chamar métodos síncronos de forma assíncrona.
Embora o uso de técnicas assíncronas com recursos do ADO.NET não adicione considerações especiais, é provável que mais desenvolvedores usem os recursos assíncronos no ADO.NET do que em outras áreas do .NET Framework. É importante estar ciente dos benefícios e das armadilhas da criação de aplicativos multi-thread. Os exemplos a seguir nesta seção apontam vários problemas importantes que os desenvolvedores precisarão levar em consideração ao criar aplicativos que incorporam a funcionalidade multithread.
Nesta seção
Aplicativos do Windows que usam retornos de chamada
Fornece um exemplo que demonstra 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 que usam identificadores de espera
Fornece um exemplo que demonstra como executar vários comandos simultâneos de uma página do ASP.NET, usando os identificadores de espera para gerenciar a operação na conclusão de todos os comandos.
Sondagem em aplicativos de Console
Fornece um exemplo que demonstra o uso de 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.