C# Linq-存储过程的中断执行
我正在开发一个从SQL server调用存储过程的C#应用程序。根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录 我想实现一个cancel按钮,这样用户可以在需要很长时间时取消存储过程的执行。我在一个新线程中运行对存储过程的调用,这样当存储过程需要一段时间时,GUI不会受到影响。我读过关于中止线程的文章,但发现很多人反对使用中止 我认为可能的解决办法是:C# Linq-存储过程的中断执行,c#,sql-server,multithreading,linq,stored-procedures,C#,Sql Server,Multithreading,Linq,Stored Procedures,我正在开发一个从SQL server调用存储过程的C#应用程序。根据用户输入的搜索参数,存储过程可能需要一段时间并返回许多记录 我想实现一个cancel按钮,这样用户可以在需要很长时间时取消存储过程的执行。我在一个新线程中运行对存储过程的调用,这样当存储过程需要一段时间时,GUI不会受到影响。我读过关于中止线程的文章,但发现很多人反对使用中止 我认为可能的解决办法是: 是否有停止执行存储过程(这是c代码中的一种方法)的常见方式 有没有更好的方法停止线程?(我还发现了Thread.Interru
- 是否有停止执行存储过程(这是c代码中的一种方法)的常见方式
- 有没有更好的方法停止线程?(我还发现了Thread.Interrupt(),但这只适用于阻塞的线程,而不适用于运行的代码)
- 我可以放弃这个线程并启动一个新的线程,但随后会使用不必要的数据库和网络资源
- 有没有办法从服务器端停止存储过程
最后,我不确定是否有任何有效的方法。您可以中止线程,但查询仍将运行,因为它由SQL server托管。您可能不想在此处使用Linq。试试这个: 基本上使用SqlCommand.Cancel()
在黑暗中拍摄,但是断开datacontext上的连接,或者将调用包装在transactionscope中并调用“回滚”会阻止它吗?