Interrompa um encadeamento que está executando uma consulta longa

Eu tenho um thread que chama um dos métodos, agora esse método executa uma consulta que pode demorar muito, possivelmente 40 minutos ou mais para ser concluída,

Desejo dar ao usuário uma opção para poder cancelar esta operação (ou seja, interromper o encadeamento e interromper a consulta para liberar o banco de dados).

Devo mencionar que estou desenvolvendo aplicativos WPF usando .net 4.5, SQL SERVER DB e C #.

questionAnswers(5)

yourAnswerToTheQuestion