一:在Thread中做取消操作
声明一个变量取去判断Thread中是否可以退出。
1  | bool res = false;  | 

不能让多个线程操作一个共享变量,否则会在release版本中有潜在bug
二:task中有专门的类CancellationTokenSource去处理“任务取消”
1.CancellationTokenSource远比一个变量强的多。
 CancellationTokenSource source = new CancellationTokenSource();
    var task = new Task(() => {
while (!source.IsCancellationRequested)
    {
        Thread.Sleep(100);
         Console.WriteLine("当前Thread={0}正在运行",Thread.CurrentThread.ManagedThreadId);
    }
 },source.Token);
task.Start();
Thread.Sleep(1000);
source.Cancel();
效果同上
2.当任务取消的时候,我希望有一个函数能够被触发,这个触发可以做一些资源的清理,又或者更新数据库信息
   CancellationTokenSource source = new CancellationTokenSource();
    source.Token.Register(()=> {
        //如果当前token被取消,此函数被执行
        Console.WriteLine("当前想线程被取消,可以做资源清理!");
    });
var task = new Task(() => {
    while (!source.IsCancellationRequested)
    {
        Thread.Sleep(100);
         Console.WriteLine("当前Thread={0}正在运行",Thread.CurrentThread.ManagedThreadId);
    }
},source.Token);
task.Start();
Thread.Sleep(1000);
source.Cancel();
3.延时取消:我想2秒之后自动取消,或者N秒
source.CancelAfter(new TimeSpan(0,0,0,2));
CancellationTokenSource 构造函数: CancellationTokenSource source = new CancellationTokenSource(1000);
取消组合,将CancellationTokenSource 组成一个链表,其中任何一个CancellationTokenSource 被取消,组合也会被取消。var s3=s1&s2;
1  | CancellationTokenSource source1 = new CancellationTokenSource();  | 
加了source1.Cancel();

不加source1.Cancel();

4.ThrowIfCancellationRequested
        CancellationTokenSource source1 = new CancellationTokenSource();
source1.Token.Register(()=> {
               Console.WriteLine("当前想线程被取消,可以做资源清理!");
           });
       var task = Task.Factory.StartNew(() =>
       {
           while (true)
           {
               source1.Token.ThrowIfCancellationRequested();
               Thread.Sleep(100);
               Console.WriteLine("当前Thread={0}正在运行", Thread.CurrentThread.ManagedThreadId);
           }
       }, source1.Token);
       Thread.Sleep(1000);
       source1.Cancel();
       Thread.Sleep(100);
       Console.WriteLine(task.Status);





















