2012-03-13 64 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秒刷新一次,查找工作線程處理的結果。完成後,「等待」頁面會顯示結果。