我开始使用Task机制,我无法弄清楚如何使用 制作
使用相同的方法进行创建和取消(与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());
}
答案 0 :(得分:0)
我刚刚找到了解决方案。 CancellationTokenSource必须是静态的。
public static CancellationTokenSource ts = new CancellationTokenSource();