如何在c#中停止特定任务

问题描述 投票:-2回答:2

我正在制作一个机器人,其中有多个任务。现在,我希望用户能够停止/启动特定任务。有什么办法可以通过taskid停止任务?我的想法是,我可以捕获任务的ID,并且当用户单击stop时,该taskID将停止/执行。谢谢您的帮助! :)

c# task
2个回答
0
投票

请参阅CancellationToken

while(true)
{
   if (token.IsCancellationRequested)
   {
      break;
   }
   DoAPieceOfWork();
}

这里有两篇带有代码示例的文章:


0
投票

无法从外部来源取消TPL任务。话虽如此,要做的方法是将CancellationToken传递给您的Task。您可以检查此令牌的属性IsCancellationRequested并引发异常,从而终止任务。

现在为了触发该属性更改,您需要创建一个CancellationTokenSource,将其CancellationToken传递给目标Task

[当您想终止任务时,可以使用CancellationTokenSourceCancel方法作为触发器,并更改上述属性。

可以找到更多信息here

         public void Initialize()
         {
            CancellationTokenSource cts=new CancellationTokenSource();
            Task myTask=Task.Run(()=>Worker(cts.Token),cts.Token);
            TriggerLoop(cts);
         }

         public void TriggerLoop(CancellationTokenSource cts)
         {
            while(true)
            {
               if(Console.ReadKey().Key=='A')
               {
                cts.Cancel();
               }
            }       
         }

         public void Worker(CancellationToken token)
         {
           while(true)
            {
              //do your stuff
              if(token.IsCancellationRequested)
              {
                  token.ThrowIfCancellationRequested();
              }
           }
        }
© www.soinside.com 2019 - 2024. All rights reserved.