如何中止/取消TPL任务?

如何中止/取消TPL任务?

在一个线程中,我创建了一些System.Threading.Task开始每一项任务。

当我做一个.Abort()若要终止线程,任务不会中止。

我如何传送.Abort()我的任务?


白板的微信
浏览 507回答 3
3回答

斯蒂芬大帝

不能。任务使用线程池中的后台线程。此外,不建议使用中止方法取消线程。你可以看看以下博客文章它解释了使用取消令牌取消任务的正确方法。下面是一个例子:class Program{     static void Main()     {         var ts = new CancellationTokenSource();         CancellationToken ct = ts.Token;         Task.Factory.StartNew(() =>         {             while (true)             {                 // do some heavy work here                 Thread.Sleep(100);                 if (ct.IsCancellationRequested)                 {                     // another thread decided to cancel                     Console.WriteLine("task canceled");                     break;                 }             }         }, ct);         // Simulate waiting 3s for the task to complete         Thread.Sleep(3000);         // Can't wait anymore => cancel this task          ts.Cancel();         Console.ReadLine();     }}
打开App,查看更多内容
随时随地看视频慕课网APP