Task.WhenAll()与Task.WhenAny()

作者:追风剑情 发布于:2017-10-17 20:20 分类:C#

示例

  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. namespace TaskTest1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. Task task1 = new Task(() => { Thread.Sleep(1000); Console.WriteLine("task1"); });
  12. Task task2 = new Task(() => { Thread.Sleep(2000); Console.WriteLine("task2"); });
  13.  
  14. //WhenAll: 所有任务执行完成,才开始执行后续任务(即ContinueWith指定的任务)
  15. Task whenAllTask = Task.WhenAll(task1, task2);
  16. //无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
  17. whenAllTask.ContinueWith(t => Console.WriteLine("所有任务执行完成!"));
  18.  
  19. //WhenAny: 任意一个任务执行完成,就开始执行后续任务(即ContinueWith指定的任务)
  20. Task whenAnyTask = Task.WhenAny(task1, task2);
  21. //无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
  22. whenAnyTask.ContinueWith(t => Console.WriteLine("有任务执行完成!"));
  23.  
  24. task1.Start();
  25. task2.Start();
  26.  
  27. Console.ReadLine();
  28. }
  29. }
  30. }

运行测试

1111.png

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号