开始长时间的后台任务
用户在我的网站上请求一些页面。
我想做的事? 向用户发送快速回答并启动后台任务需要很长时间。 看起来像:
public ActionResult index() { var task = new Task(Stuff); //start task async task.start(); return View(); } public void Stuff() { //long time operation }
我该怎么做?
您可以向Task StartNew()方法传递一个参数,该参数指示您正在启动的任务是“长时间运行”,这会向任务计划程序提供一个提示,以便在新线程上启动任务。
var task = Task.Factory.StartNew(Stuff, TaskCreationOptions.LongRunning);
以下是来自MSDN的示例http://msdn.microsoft.com/en-us/library/ms978607.aspx#diforwc-ap02_plag_howtomultithread
虽然您需要ASP.NET MVC,但您可以使用此ASP.NET WebForms示例的核心思想。
该方法是创建一个工作线程来完成您的工作,启动它并向用户发送“等待”页面。 此“等待”页面将每隔N秒刷新一次,查找工作线程处理的结果。 完成后,“等待”页面显示结果。
你想要定义一个委托并在返回之前将其关闭。 例如,请参阅: http : //msdn.microsoft.com/en-us/magazine/cc301332.aspx
- ASP.NET MVC重新编译限制达到了15个HostingEnvironment,启动了关闭HostingEnvironment导致关机
- Moq:无法转换为界面
- 为什么我在DropDownList中获得“System.Web.Mvc.SelectListItem”?
- Azure Redis无法连接到Redis服务器
- 在自定义AuthorizeAttribute中获取Post请求参数
- 如何在请求结束时释放资源并在ASP.NET 5 / Core中处理注入的服务?
- 如何扩展AuthorizeAttribute并检查用户的角色
- 测试ModelState在asp.net mvc中始终有效
- 停止url编码cookie