无法关闭Task.Factory.StartNew启动的任务

时间:2012-11-20 13:32:37

标签: c# .net asp.net-mvc task

您好我是C#.net中多线程和任务的新手,只有帮助我才能成功启动新任务,可以继续使用以下命令运行:

//if(tsk =NotRunning){
tsk = Task.Factory.StartNew(TheMethod);

现在工作正常,但现在当它开始无法阻止它时,我一直在搜索msdn并找出一些似乎正在完成这项工作的方法Dispose他们没有这样做,所以我想知道两件事:

  • 如何检查此任务是否已在运行? (它是一个MVC项目,任务是通过控制器调用…/Task/Start启动的,所以我不希望每次访问此URL时都继续启动另一个任务实例我只希望在整个过程中只启动一个实例应用程序在后台运行)

  • 其次我如何阻止它,我尝试了以下但是没有工作:

    public void TaskClose()
    {
        tsk.Dispose();
        var st = tsk.Status.ToString();
    }
    

我知道在互联网上可能没有什么答案,但是他们大多使用Lambda表达式而且我没有很好地排练他们,所以请以其他方式提供答案,我甚至会感谢你能指出正确的{{1我可以用来完成结果的名称或method

谢谢。

1 个答案:

答案 0 :(得分:4)

你无法阻止TPL任务。处理此问题的正确方法是实施cancellation tokens