【发布时间】:2014-07-18 15:34:17
【问题描述】:
我正在尝试实现一个功能,其中 SQL Server 上有一个必须从 ASP MVC 应用程序调用并在后台处理的存储过程(它可能需要很长时间,因为它远程调用另一个存储过程来处理 excel存储在服务器上的文件)。但是最后一个 HTTP 请求的响应应该返回给客户端,这样 UI 就不会挂起等待处理。
我尝试了很多不同的方法,但 UI 仍然没有立即响应。
我试过BackgroundWorker,但它不允许主线程响应客户端,直到它完成处理,
我也试过了:
Thread.QueueUserWorkItem(delegate { //method which performs stored procedure calls//
});
它仍然没有返回响应并且HttpContext.Current 在后台线程中不可用。
也许有一种方法可以启动后台处理,暂停它以让主线程向浏览器返回响应,然后恢复后台线程以使用存储过程调用进行所有处理?
我错过了什么吗?
有人可以告诉我如何解决这个问题吗?将不胜感激。
【问题讨论】:
-
我建议不要尝试使用 HTTP 上下文之类的东西。你显然需要它的东西,所以将任何东西作为线程状态传递到你的后台线程并进行处理。这不仅更简单,而且通过定义您的线程需要什么,您可以更好地定义它的目的。
标签: c# asp.net-mvc multithreading