0

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

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

有什么办法吗?

编辑 :

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

我想要一些事件驱动机制,以便在命令执行完成之前没有线程在使用。

但现在感觉我要求的太多了……是吗?

4

1 回答 1

0

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

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

使用一些代码,您可以将其包装在async友好的代码中(使用 async/await)以在异步 MVC 操作中使用。

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

于 2013-03-16T06:52:41.417 回答