c# - Linq - 中断存储过程的执行

标签 c# sql-server multithreading linq stored-procedures

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

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

我想到的可能的解决方案:

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

最佳答案

您可能不想在这里使用 Linq。试试这个:

Stop SQL query execution from .net Code

基本上使用SqlCommand.Cancel()

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.cancel.aspx

关于c# - Linq - 中断存储过程的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512943/

相关文章:

c# - 使用 NUnit 模拟 EF 的 ExecuteSqlCommand

c# - 手动处理 SqlDbConnection 导致 "internal .net framework provider error 1"

c# - 单线程单元问题

.net - VB.NET - 在单独的线程中工作以防止表单挂起

c# - 如何检查 web 元素当前不可见,selenium,c#

c# - 如何在一个程序中用 RSA 加密 Xml 文件并在另一个程序中解密?

JavaScript + SQL、.NET

SQL Server 存储过程包含SQL 或调用查看

ios - NSFetchedResultsController:在后台线程中获取

c# - Directshow.net 不检测 Windows 7 中的所有麦克风