如何在执行sql命令时保持线程空闲

时间:2013-03-16 06:48:54

标签: c# asp.net sql ado.net

所以我有loooooooong存储过程。执行大约需要5-8分钟。 假设我创建了一个sqlCommand对象并通过我的asp.net应用程序执行它,该线程将等待命令执行完成或命令超时持续时间。

事件如果我是另一个线程(thread_2)来完成此任务,则thread_2将等待。我想避免等待,因为命令将需要大约4-7分钟才能执行。

有没有办法做到这一点?

编辑:

纠正我如果我错了, 但我相信使用异步版本也会使用thread_2。 异步方法只是减少线程代码的包装器。 [我的信念]

我想要一些事件驱动机制,因此在命令执行完成之前不会使用任何线程。

但是现在感觉我要求的太多......我呢?

1 个答案:

答案 0 :(得分:0)

为了使SQL调用异步,所有命令都有异步版本 - 即SqlCommand.ExecuteNonQueryAsync

第二部分是使页面呈现异步,以便在执行SQL命令时不使用线程。 MVC和WebForms都允许你这样做(MVC更容易)。请注意,如果执行时间与您所说的一样长,您可能希望在页面上实现某种轮询机制,而不是等待请求竞争来呈现结果......

使用某些代码,您可以将其打包在async友好代码(Using async / await)中,以便在async MVC actions中使用。

如果你必须坚持使用WebForms / plain ASP.Net,你需要做更多的工作来实现异步页面,但它仍然是可能的。