Linq - 中断存储过程的执行

svh*_*svh 7 c# linq sql-server multithreading stored-procedures

我正在研究一个从SQL服务器调用存储过程的C#应用​​程序.根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录.

我想实现一个取消按钮,以便用户可以在需要很长时间时取消存储过程的执行.我在新线程中运行对存储过程的调用,因此当存储过程需要一段时间时,GUI不会受到影响.我读过关于中止一个帖子但发现许多关于使用中止的拒绝意见.

我想到的可能解决方案:

  • 是否有一种常见的方式来停止执行存储过程(这是c#代码中的方法)
  • 有没有更好的方法来阻止线程?(我发现了Thread.Interrupt()但这只适用于被阻塞的线程,而不是运行代码)
  • 我可以放弃线程并启动一个新线程,但之后会使用不必要的数据库和网络资源
  • 有没有办法从服务器端停止存储过程?

小智 0

您可以尝试放弃进程服务器端,但它需要高权限(服务器管理员),因此在大多数情况下不可行。

线程中止可以工作(不推荐),但我不确定数据库是否会停止处理。

最后我不确定是否有任何方法可以有效地做到这一点。