2

您好,我是 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 表达式,我对他们不是很熟悉,所以请以其他方式提供答案,我什至会感激你能指出我可以使用的权利methodproperty名称完成我的结果。

谢谢你。

4

1 回答 1

4

您无法停止 TPL 任务。处理这个问题的正确方法是实现取消标记

于 2012-11-20T13:36:02.397 回答