C# Task 取消 CancellationTokenSource CancellationToken

Task 取消

Ps:个人理解

source.Cancel(); 会取消所有的对应的线程

task.Wait(100); 会非同步的阻塞 但是不会到下面的代码里面去 《具体请看wait any的出现位置》

class Program
    {
        static void Main(string[] args)
        {
            List<Task> tasks = new List<Task>();
            CancellationTokenSource source = new CancellationTokenSource();
            CancellationToken token = source.Token;
            int i;
            try
            {

                for (i = 0; i < 100; i++)
                {
                    Console.WriteLine("start:" + i);
                    Task task = Task.Run(() =>
                    {
                        int num = i;
                        Thread.Sleep(2000);
                        Console.WriteLine("finish:" + num);
                    }, token);
                    task.Wait(100);
                    Console.WriteLine("end:" + i);
                    tasks.Add(task);
                }
                Console.WriteLine("wait any");
                Task.WaitAny(tasks.ToArray());
                Console.WriteLine("cancel");
                source.Cancel();
                //Thread.Sleep(1000);
                Console.WriteLine("wait all");  

                Task.WaitAll(tasks.ToArray());  //应为cancel会产生异常
                Console.WriteLine("*****" + i);
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    Console.WriteLine("\nhi,我是OperationCanceledException:{0}\n", e.Message);
                }

                //task1是否取消
                //Console.WriteLine("task1是不是被取消了? {0}", task1.IsCanceled);
                //Console.WriteLine("task2是不是被取消了? {0}", task2.IsCanceled);
            }

            for (int j = 0; j < tasks.Count; j++) {
                Console.WriteLine("task{0}是不是被取消了? {1}",j, tasks[j].IsCanceled);
            }


        }
    }
start:0
end:0
start:1
end:1
start:2
end:2
start:3
end:3
start:4
end:4
start:5
end:5
start:6
end:6
start:7
end:7
start:8
end:8
start:9
end:9
start:10
end:10
start:11
end:11
start:12
end:12
start:13
end:13
start:14
end:14
start:15
end:15
start:16
end:16
start:17
end:17
start:18
end:18
start:19
end:19
start:20
finish:0
finish:1
end:20
start:21
finish:2
end:21
start:22
finish:3
end:22
start:23
finish:4
end:23
start:24
finish:5
end:24
start:25
end:25
start:26
end:26
start:27
end:27
start:28
end:28
start:29
end:29
start:30
end:30
start:31
end:31
start:32
end:32
start:33
end:33
start:34
finish:14
end:34
start:35
end:35
start:36
end:36
start:37
end:37
start:38
end:38
start:39
finish:20
end:39
start:40
finish:20
end:40
start:41
finish:21
end:41
start:42
finish:22
end:42
start:43
finish:23
end:43
start:44
finish:24
end:44
start:45
end:45
start:46
end:46
start:47
end:47
start:48
end:48
start:49
end:49
start:50
end:50
start:51
end:51
start:52
end:52
start:53
end:53
start:54
finish:34
finish:34
end:54
start:55
end:55
start:56
end:56
start:57
end:57
start:58
end:58
start:59
finish:39
end:59
start:60
finish:40
end:60
start:61
finish:41
end:61
start:62
finish:42
end:62
start:63
finish:43
end:63
start:64
finish:44
end:64
start:65
end:65
start:66
end:66
start:67
end:67
start:68
end:68
start:69
end:69
start:70
end:70
start:71
end:71
start:72
end:72
start:73
finish:54
finish:54
finish:54
end:73
start:74
end:74
start:75
end:75
start:76
end:76
start:77
end:77
start:78
end:78
start:79
finish:59
finish:60
end:79
start:80
finish:61
end:80
start:81
finish:62
end:81
start:82
finish:63
end:82
start:83
finish:64
end:83
start:84
end:84
start:85
end:85
start:86
end:86
start:87
end:87
start:88
end:88
start:89
end:89
start:90
end:90
start:91
end:91
start:92
end:92
start:93
finish:73
finish:73
finish:73
finish:73
end:93
start:94
end:94
start:95
end:95
start:96
end:96
start:97
end:97
start:98
finish:79
end:98
start:99
finish:79
end:99
wait any
cancel
wait all
finish:80
finish:81
finish:82
finish:83
finish:93
finish:93
finish:93
finish:93
finish:93
finish:98
finish:99

hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。


hi,我是OperationCanceledException:已取消一个任务。

task0是不是被取消了? False
task1是不是被取消了? False
task2是不是被取消了? False
task3是不是被取消了? False
task4是不是被取消了? False
task5是不是被取消了? False
task6是不是被取消了? False
task7是不是被取消了? False
task8是不是被取消了? False
task9是不是被取消了? False
task10是不是被取消了? False
task11是不是被取消了? False
task12是不是被取消了? False
task13是不是被取消了? False
task14是不是被取消了? False
task15是不是被取消了? False
task16是不是被取消了? False
task17是不是被取消了? False
task18是不是被取消了? False
task19是不是被取消了? False
task20是不是被取消了? False
task21是不是被取消了? False
task22是不是被取消了? False
task23是不是被取消了? False
task24是不是被取消了? False
task25是不是被取消了? False
task26是不是被取消了? False
task27是不是被取消了? False
task28是不是被取消了? False
task29是不是被取消了? False
task30是不是被取消了? False
task31是不是被取消了? False
task32是不是被取消了? False
task33是不是被取消了? False
task34是不是被取消了? False
task35是不是被取消了? False
task36是不是被取消了? False
task37是不是被取消了? False
task38是不是被取消了? False
task39是不是被取消了? False
task40是不是被取消了? False
task41是不是被取消了? False
task42是不是被取消了? False
task43是不是被取消了? False
task44是不是被取消了? False
task45是不是被取消了? False
task46是不是被取消了? False
task47是不是被取消了? True
task48是不是被取消了? True
task49是不是被取消了? True
task50是不是被取消了? True
task51是不是被取消了? True
task52是不是被取消了? True
task53是不是被取消了? True
task54是不是被取消了? True
task55是不是被取消了? True
task56是不是被取消了? True
task57是不是被取消了? True
task58是不是被取消了? True
task59是不是被取消了? True
task60是不是被取消了? True
task61是不是被取消了? True
task62是不是被取消了? True
task63是不是被取消了? True
task64是不是被取消了? True
task65是不是被取消了? True
task66是不是被取消了? True
task67是不是被取消了? True
task68是不是被取消了? True
task69是不是被取消了? True
task70是不是被取消了? True
task71是不是被取消了? True
task72是不是被取消了? True
task73是不是被取消了? True
task74是不是被取消了? True
task75是不是被取消了? True
task76是不是被取消了? True
task77是不是被取消了? True
task78是不是被取消了? True
task79是不是被取消了? True
task80是不是被取消了? True
task81是不是被取消了? True
task82是不是被取消了? True
task83是不是被取消了? True
task84是不是被取消了? True
task85是不是被取消了? True
task86是不是被取消了? True
task87是不是被取消了? True
task88是不是被取消了? True
task89是不是被取消了? True
task90是不是被取消了? True
task91是不是被取消了? True
task92是不是被取消了? True
task93是不是被取消了? True
task94是不是被取消了? True
task95是不是被取消了? True
task96是不是被取消了? True
task97是不是被取消了? True
task98是不是被取消了? True
task99是不是被取消了? True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值