Estoy trabajando en una aplicación C# que llama a procedimientos almacenados desde un servidor SQL. Dependiendo de los parámetros de búsqueda que el usuario ingrese, el procedimiento almacenado puede tomar un tiempo y devolver muchos registros.Linq: ejecución de interrupción del procedimiento almacenado
Quiero implementar un botón cancelar para que el usuario pueda cancelar la ejecución del procedimiento almacenado cuando sea demasiado largo. Ejecuto la llamada al procedimiento almacenado en un nuevo hilo para que la GUI no se vea afectada cuando el procedimiento almacenado demora un poco. Leí sobre abortar un hilo, pero encontré muchas opiniones negativas sobre el uso del aborto.
soluciones posibles pienso en:
- ¿Hay una manera común para detener la ejecución del procedimiento almacenado (que es un método en el código C#)
- ¿Hay una mejor manera de detener el hilo? (Encontré también Thread.Interrupt() pero esto solo funciona en un hilo bloqueado, no en código en ejecución)
- Puedo abandonar el hilo y comenzar uno nuevo pero luego se utilizan recursos innecesarios de base de datos y de red
- ¿Hay una forma de detener el procedimiento almacenado desde el lado del servidor?
tiro en la oscuridad, pero que desconectar la conexión en el DataContext, o envolviendo la llamada en un TransactionScope y llamando "retroceder" detenerlo? – Ocelot20