异步编程(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