赞
踩
一、task的创建与开启
1.实例化新的task,需要通过star开启
Task task = new Task(() => { //操作 }); task.Start();
2.代理工厂创建task
Task task2 = Task.Factory.StartNew(() => { //操作 });
3.放进线性池队
Task task3 = Task.Run(() => { //操作 });
二、task阻塞
taskXX.Wait(); 等待taskXX执行完毕
task.WaitAll(new Task[]{task1,task2});//等待task1和task2都执行完毕
task.WaitAny(Task[] tasks);tasks执行完就解除阻塞
三、task执行以后进行后续操作
task.whenAny(task[] taskxx);任一个taskxx完成后就执行后续操作
task.whenAll(xxxxx);所有task任务完成后再执行后续操作
//task1,task2执行完了后执行后续操作 Task.WhenAll(task1, task2).ContinueWith((t) => { //后续操作 });
//通过TaskFactroy实现 Task.Factory.ContinueWhenAll(new Task[] { task1, task2 }, (t) => { //后续操作 });
四、取消task任务
CancellationTokenSource source = new CancellationTokenSource();
//source.Cancel()方法请求取消任务,IsCancellationRequested会变成true source.Cancel();
//延时取消,效果等同于Thread.Sleep(5000);source.Cancel(); source.CancelAfter(5000);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。