Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC长时间运行的EF存储过程调用_C#_.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# MVC长时间运行的EF存储过程调用

C# MVC长时间运行的EF存储过程调用,c#,.net,asp.net-mvc,entity-framework,C#,.net,Asp.net Mvc,Entity Framework,我想知道通过ASP.NET MVC 3用户界面触发长时间/正在运行的存储过程调用的简单而有效的方法是什么,该用户界面立即返回web UI,用户“允许”关闭浏览器并稍后再次检查 我真的不想只为此创建windows服务,我正在考虑使用线程池。QueueUserWorkItem方法,回收甚至不会是一个大问题,应用程序也不会处于重载状态,这是一个内部WebUI,我们正在制作它以简化一些维护任务 是否有人尝试了ThreadPool.QueueUserWorkItem方法,并使用应用程序缓存或类似的方式来持

我想知道通过ASP.NET MVC 3用户界面触发长时间/正在运行的存储过程调用的简单而有效的方法是什么,该用户界面立即返回web UI,用户“允许”关闭浏览器并稍后再次检查

我真的不想只为此创建windows服务,我正在考虑使用
线程池。QueueUserWorkItem
方法,回收甚至不会是一个大问题,应用程序也不会处于重载状态,这是一个内部WebUI,我们正在制作它以简化一些维护任务


是否有人尝试了
ThreadPool.QueueUserWorkItem
方法,并使用应用程序缓存或类似的方式来持久化存储过程调用的状态,如“正在执行”或“已完成”?

任何进入ThreadPool.QueueUserWorkItem队列的内容都会将资源窃取到ASP.NET请求处理队列中。如果您计划运行许多长时间运行的任务,那么您应该使用不同的线程/线程池。如果只是偶尔一次,那么这肯定是一个可行的解决方案


在任何情况下,请记住,您无法从web请求外部访问应用程序缓存/会话,因此您必须找到另一种方法来保存任务的状态。

您应该研究托管任务。通过这种方法,您可以通过http调用直接将此web服务请求插入异步队列

为了使服务更易于从UI使用,您可以

您可以直接从javascript发布到REST服务,利用Microsoft提供的开箱即用队列技术,而不必处理多线程


您还可以使用Microsoft提供的、现成的解决方案

您可以使用ansyncController,UI几乎可以立即返回。在回调时,您可以存储特定用户的通知