Comment puis-je annuler une requête de database dans ASP.NET lorsque le browser de l'user se déconnecte?

Mon application ASP.NET (3.5) permet aux users d'exécuter des requêtes complexes pouvant prendre jusqu'à 4 minutes pour returnner les résultats.

Quand je fais de longues loops de code, je vérifie occasionnellement Response.IsClientConnected() pour que je puisse terminer la page si l'user ferme son browser ou touche le button stop.

Mais lors de l'interrogation de SQL Server, mon code .NET est bloqué lors de l'appel de GetDataReader() .

Existe-t-il un moyen simple de faire GetDataReader () de façon asynchronous pour que je puisse attendre, mais vérifier, par exemple, toutes les 5-10 secondes pour voir si l'user est toujours connecté, et renflouer la database s'il est parti?

Ou y a-t-il une autre alternative à laquelle je ne pense pas?

vous pouvez utiliser BeginExecuteReader de sqlcommand pour get un exemple asynchronous sqlreader

pas sûr à 100% si c'est ce dont vous avez besoin?

lien montrant annuler

Je suggère de créer un object qui a des methods Start() et Wait() encapsulant votre requête. En interne, utilisez ManualResetEvent pour attendre la fin de la requête. Vous utiliserez la fonction Set() lorsque la requête est terminée et la WaitOne() ou WaitOne(TimeSpan ts) pour l'attendre dans votre méthode Wait() .