开始长时间的后台任务

用户在我的网站上请求一些页面。

我想做的事? 向用户发送快速回答并启动后台任务需要很长时间。 看起来像:

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