Task.WhenAll()与Task.WhenAny()

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

示例

using System;
using System.Threading;
using System.Threading.Tasks;

namespace TaskTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Task task1 = new Task(() => { Thread.Sleep(1000); Console.WriteLine("task1"); });
            Task task2 = new Task(() => { Thread.Sleep(2000); Console.WriteLine("task2"); });

            //WhenAll: 所有任务执行完成,才开始执行后续任务(即ContinueWith指定的任务)
            Task whenAllTask = Task.WhenAll(task1, task2);
            //无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
            whenAllTask.ContinueWith(t => Console.WriteLine("所有任务执行完成!"));

            //WhenAny: 任意一个任务执行完成,就开始执行后续任务(即ContinueWith指定的任务)
            Task whenAnyTask = Task.WhenAny(task1, task2);
            //无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
            whenAnyTask.ContinueWith(t => Console.WriteLine("有任务执行完成!"));

            task1.Start();
            task2.Start();

            Console.ReadLine();
        }
    }
}

运行测试

1111.png

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号