复习篇_C#_编程概念(1)_异步编程(3)

124 阅读1分钟

异步编程(3)

批量异步任务,怎么处理。我们有个叫做 WaitAll 的函数,这个是用于批量异步任务等待的。
WhenAny 用于任务完成的

异步任务等待,全部任务完成

Task.WaitAll(数组);

异步任务完成时操作,一个任务完成

Task.WhenAny(数组);
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace StudyRecordProject
{
    class Program
    {
        static async Task Main(string[] args)
        {

            List<Task> tasks = new List<Task>();
            //循环 10 次 ,统计 1 类
            Console.WriteLine("开始循环统计 1 类");
            for (int i = 0; i < 10; i++)
            {
                tasks.Add(Task.Factory.StartNew(() => Statistics01(), TaskCreationOptions.LongRunning));
            }//统计 2 类
            Console.WriteLine("开始统计 2 类");
            tasks.Add(Task.Run(Statistics02));
            //统计 3 类
            Console.WriteLine("开始统计 3 类");
            tasks.Add(Task.Run(Statistics03));

            Task.WaitAll(tasks.ToArray());
            //Console.WriteLine(we);
            Console.WriteLine("结束统计");
        }

        /// <summary>
        /// 统计 1 
        /// </summary>
        /// <returns></returns>
        static int Statistics01()
        {
            //等待 20 秒
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(1000);
            }
            Console.WriteLine("我是统计 1 类,用时 10 秒");
            return 10;
        }

        /// <summary>
        /// 统计 2
        /// </summary>
        /// <returns></returns>
        static int Statistics02()
        {
            for (int i = 0; i < 20; i++)
            {
                Thread.Sleep(1000);
            }
            Console.WriteLine("我是统计 2 类,用时 20 秒");
            return 20;
        }

        /// <summary>
        /// 统计 3 
        /// </summary>
        /// <returns></returns>
        static int Statistics03()
        {
            for (int i = 0; i < 30; i++)
            {
                Thread.Sleep(1000);
            }
            Console.WriteLine("我是统计 3 类,用时 30 秒");
            return 30;
        }
    }
}

欢迎进qq群交流:704028989