2012-03-13 28 views
13

用户请求我的网站上的一些页面。开始很长时间的后台任务

我想干什么?发送给用户一个快速的回答,并开始后台任务,这需要很长时间。 它看起来像:

public ActionResult index() 
{ 
    var task = new Task(Stuff); 

    //start task async 
    task.start(); 

    return View(); 
} 

public void Stuff() 
{ 
    //long time operation  
} 

我该怎么办?

+4

怎么能做什么?你已经有了代码,它有什么问题? – svick 2012-03-13 12:59:05

回答

18

您可以通过Task StartNew()方法传递一个参数,该参数指示您要启动的任务是“长时间运行”,它向Task Scheduler提供了一个提示以在新线程上启动任务。

var task = Task.Factory.StartNew(Stuff, TaskCreationOptions.LongRunning); 
4

下面是从MSDN http://msdn.microsoft.com/en-us/library/ms978607.aspx#diforwc-ap02_plag_howtomultithread

一个例子当你需要它的ASP.NET MVC,您可以使用此ASP.NET的WebForms例子的核心理念。

该方法是创建一个工作线程来完成您的工作,启动它并发送一个“等待”页面给用户。这个“等待”页面将每N秒刷新一次,查找工作线程处理的结果。完成后,“等待”页面会显示结果。