C# 无法关闭由task.Factory.StartNew启动的任务
您好,我是C#.net中多线程和任务的新手,仅从“帮助”中我成功启动了一个新任务,可以使用以下工具在后台继续运行: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
//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服务来处理您需要做的任何后台工作。