Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法关闭由task.Factory.StartNew启动的任务_C#_.net_Asp.net Mvc_Task - Fatal编程技术网

C# 无法关闭由task.Factory.StartNew启动的任务

C# 无法关闭由task.Factory.StartNew启动的任务,c#,.net,asp.net-mvc,task,C#,.net,Asp.net Mvc,Task,您好,我是C#.net中多线程和任务的新手,仅从“帮助”中我成功启动了一个新任务,可以使用以下工具在后台继续运行: //if(tsk =NotRunning){ tsk = Task.Factory.StartNew(TheMethod); 现在它工作正常,但现在当它启动时,我现在无法停止它,我一直在搜索,并找到了一些似乎可以完成工作的方法,例如处置购买他们没有这样做,因此我想知道两件事: 如何检查此任务是否已在运行?(这是一个MVC项目,任务是通过控制器调用启动的,../task/Star

您好,我是C#.net中多线程和任务的新手,仅从“帮助”中我成功启动了一个新任务,可以使用以下工具在后台继续运行:

//if(tsk =NotRunning){
tsk = Task.Factory.StartNew(TheMethod);
现在它工作正常,但现在当它启动时,我现在无法停止它,我一直在搜索,并找到了一些似乎可以完成工作的方法,例如
处置
购买他们没有这样做,因此我想知道两件事:

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

  • 第二,我如何阻止它。我尝试了以下方法,但没有成功:

    public void TaskClose()
    {
        tsk.Dispose();
        var st = tsk.Status.ToString();
    }
    
我知道在互联网上可能很少有关于这个问题的答案,但他们大多使用Lambda表达式,我对他们不是很熟悉,所以请以其他方式提供答案,我甚至希望你能指出正确的
方法
属性
名称,我可以使用它们来完成我的结果


谢谢。

您不能停止第三方物流任务。正确的处理方法是实施。

您不能停止TPL任务。正确的处理方法是实现。

谢谢,但我在这里可能听起来很愚蠢,但是如果没有
Lambda表达式,就不可能做到这一点。
我是新手,因此无法真正理解发生了什么,这些示例也使用了它和其他许多示例:/@Maven该任务有一个
IsCompleted
属性。谢谢,但是我在这里听起来可能很愚蠢,但是如果没有
Lambda表达式,我就不可能完成这项任务
我是新手,因此无法真正理解发生了什么,这些示例也使用了该属性和其他许多属性:/@Maven该任务有一个
IsCompleted
属性。建议单独学习lambda表达式语法和线程(两者都是相当高级的概念),然后当你确定两者都已确定时,将这两个想法结合起来。是的,我想我已经开始了,但是我的另一个问题仍然是remian回答了我该如何检查任务是否已经在运行?最终,你最初的问题的答案是“你不能”,这就是为什么我建议启动慢一点。另外,你也不想在ASP.NET应用程序中有一个后台线程。NET MVC和TPL(以这种方式使用)并不是一个很好的组合。只需创建一个单独的Windows服务来处理您需要做的任何后台工作。建议您单独学习lambda表达式语法和线程(两者都是相当先进的概念),然后当您确定两者都已确定时,将这两个想法结合起来。是的,我想我已经开始了,但是我的另一个问题仍然是remian回答了我该如何检查任务是否已经在运行?最终,你最初的问题的答案是“你不能”,这就是为什么我建议启动慢一点。另外,你也不想在ASP.NET应用程序中有一个后台线程。NET MVC和TPL(以这种方式使用)并不是一个很好的组合。只需创建一个单独的Windows服务来处理您需要做的任何后台工作。