1

タスク メカニズムを使い始めたのですが、作成方法がわかりません。

  • 仕事を始める方法
  • これをキャンセルするためにもう1つ。

同じメソッドから作成とキャンセルを行うと機能します (StartTask のコメント化されたコードのように)。

しかし、CancelTask​​ メソッドを使用すると機能しません。(ジョブは回転し続け、taskProgress は増加し続けます)。

フレームワークのバージョンは .NET 4 で、プロジェクトは ASP.NET MVC 3 です

よろしくお願いします!

private static int taskProgress = 0;
public CancellationTokenSource ts = new CancellationTokenSource();

public ActionResult StartTask()
{
    Task.Factory.StartNew(() =>
    {
        while (true)
        {
            if (ts.IsCancellationRequested)
                break;

            Thread.Sleep(100);
            taskProgress++;
        }
    }, ts.Token);

    //Thread.Sleep(3000);
    //ts.Cancel();

    return RedirectToAction("GetTaskProgress");
}

public ActionResult CancelTask()
{
    ts.Cancel();
    return Content("Cancelled (percentage="+taskProgress.ToString()+")");
}

public ActionResult GetTaskProgress()
{
    return Content(taskProgress.ToString());
}
4

1 に答える 1

0

私はちょうど解決策を見つけました。CancellationTokenSource は静的である必要があります。

public static CancellationTokenSource ts = new CancellationTokenSource();
于 2012-11-27T17:17:51.587 に答える