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 回答