我正在研究一个从SQL服务器调用存储过程的C#应用程序。根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录。
我想实现一个取消按钮,这样用户可以在需要很长时间时取消存储过程的执行。我在新线程中运行对存储过程的调用,因此当存储过程需要一段时间时,GUI不会受到影响。我读过关于中止一个帖子但发现许多关于使用中止的拒绝意见。
我想到的可能的解决方案:
答案 0 :(得分:1)
您可能不想在这里使用Linq。试试这个:
Stop SQL query execution from .net Code
基本上使用SqlCommand.Cancel()
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.cancel.aspx
答案 1 :(得分:0)
您可以尝试放弃流程服务器端,但它需要HIGH privilesdge(服务器管理员),因此在大多数协作下都不可行。
线程堕胎可以工作(不推荐),但我不确定db会停止处理。
最后,我不确定是否有任何方法可以有效地做到这一点。
答案 2 :(得分:0)
您可以中止线程,但查询仍将运行,因为它由SQL服务器托管。