Existem muitas funções assíncronas no ADO.NET, por exemplo.
SqlCommand.BeginExecuteNonQuery
. Você pode chamar essas funções em sua aplicação, armazenar o objeto de resultado e cancelá-lo quando o usuário clicar no botão "Cancelar".
Então, em pseudo-código, você pode fazer estas etapas:
- O usuário clica em Pesquisar botão.
- No manipulador do botão, abra sua conexão de banco de dados e similares.
- Mostrar seu Cancelar botão.
- Chame a função assíncrona ADO.NET de sua escolha.
- Armazenar o
IAsyncResult
objeto retornado da chamada de função (para detectar quando a operação terminou para ocultar o botão cancelar novamente). - No manipulador do botão cancelar, chame o
Cancel
método deSqlCommand
.