class Program
{
static async Task Main()
{
NewMethodB();
}
// 倒计时 找龙珠
private static void NewMethodB()
{
var cde = new CountdownEvent(7);//线程池上启动7个工作项
var random = new Random();
void SeekLongZhu()
{
Console.WriteLine($"{Task.CurrentId} 开始寻找 ...");
while (cde.CurrentCount > 0)
{
Task.Delay(200).Wait();//任务 延迟200毫秒
if (random.Next(100) == 0)
{
cde.Signal();//每次调用Signal 都会将信号计数减 1。在主线程上,调用Wait 将阻塞,直到信号计数为零。
Console.WriteLine($"{Task.CurrentId} 找到一颗龙珠");
}
}
}
var tasks = Enumerable.Range(0, 10)//生成数字在0-10 范围内的整数的序列。
.Select(n => Task.Run(SeekLongZhu));
Task.WaitAll(tasks.ToArray());//等待所有提供的Task对象完成执行。
cde.Wait();
Console.WriteLine("七颗七龙珠集齐,开始召唤神龙,5555");
}
}