【发布时间】:2011-04-01 11:51:03
【问题描述】:
我正在开发一个从 SQL 服务器调用存储过程的 C# 应用程序。根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录。
我想实现一个取消按钮,以便用户可以在需要很长时间时取消执行存储过程。我在一个新线程中运行对存储过程的调用,因此当存储过程需要一段时间时,GUI 不会受到影响。我读过关于中止线程的文章,但发现许多关于使用中止的拒绝意见。
我想到的可能解决方案:
- 有没有常用的方式来停止执行存储过程(这是c#代码中的一种方法)
- 有没有更好的方法来停止线程? (我还发现了 Thread.Interrupt() 但这仅适用于阻塞线程,不适用于正在运行的代码)
- 我可以放弃线程并启动一个新线程,但会使用不必要的数据库和网络资源
- 有没有办法从服务器端停止存储过程?
【问题讨论】:
-
在黑暗中拍摄,但是断开数据上下文上的连接,或者将调用包装在事务范围中并调用“回滚”会阻止它吗?
标签: c# sql-server multithreading linq stored-procedures