2012-03-13 19 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

答えて

18

Task StartNew()メソッドには、開始するタスクが新しいスレッドでタスクを開始するためのヒントを提供する「長時間実行中」であることを示すパラメータを渡すことができます。

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

は、ここでは、ASP.NET MVCのためにそれを必要としますが、あなたはこのASP.NET Webフォーム例の核となるアイデアを使用することができますMSDN http://msdn.microsoft.com/en-us/library/ms978607.aspx#diforwc-ap02_plag_howtomultithread

からの例です。

アプローチは、ジョブを実行し、開始し、「待機中の」ページをユーザーに送信するワーカースレッドを作成することです。この「待機中」ページはN秒ごとに更新され、ワー​​カースレッドによって処理された結果が検索されます。終了すると、「待機中」ページに結果が表示されます。

関連する問題