当前位置:   article > 正文

Task异步操作_task 异步

task 异步

一、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);
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号