Task取消,感觉不怎么对

需要.Net 4.0

 

  
  
  
  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5.  
  6. using System.Threading.Tasks;  
  7. using System.Threading;  
  8.  
  9. namespace TaskDemo  
  10. {  
  11.     class Program  
  12.     {  
  13.         static void Main(string[] args)  
  14.         {  
  15.             CancellationTokenSource cts = new CancellationTokenSource();  
  16.  
  17.             Task<int> t = new Task<int>(() => Add(cts.Token), cts.Token);  
  18.             t.Start();  
  19.  
  20.             t.ContinueWith(TaskEnded);  
  21.             //等待按下任意一个键取消任务      
  22.             Console.ReadKey();  
  23.             cts.Cancel();  
  24.             Console.ReadKey();  
  25.         }  
  26.         static int Add(CancellationToken ct)  
  27.         {  
  28.             Console.WriteLine("任务开始……");  
  29.             int result = 0;  
  30.             while (!ct.IsCancellationRequested)  
  31.             {  
  32.                 result++;  
  33.                 Thread.Sleep(1000);  
  34.             }  
  35.             return result;  
  36.         }  
  37.         static void TaskEnded(Task<int> task)  
  38.         {  
  39.             Console.WriteLine("任务完成,完成时候的状态为:");  
  40.             Console.WriteLine("IsCanceled={0}\tIsCompleted={1}\tIsFaulted={2}", task.IsCanceled, task.IsCompleted, task.IsFaulted);  
  41.             Console.WriteLine("任务的返回值为:{0}", task.Result);  
  42.         }  
  43.     }  
  44. }  
  45.  
  46.  
  47.  
  48.  

返回值

 

Task测试

为何这里的IsCompleted总是为True?这算取消成功吗?没错确实是取消了。

 

你可能感兴趣的:(职场,休闲,Task取消,感觉不怎么对)