前言
把异步先总结完吧。
countDownEvent 这东西是干什么的呢?
比如说我们比赛跑步,我们需要得出的是第一二三名得出后就可以先统计出来,因为比较重要,后面没有获得获奖名次的可以后续统计出来。
正文
static void Main(string[] args)
{
Console.WriteLine("Starting two operations");
var t1 = new Thread(() => PerformOperation("operation 1", 4));
var t2 = new Thread(() => PerformOperation("operation 1", 8));
t1.Start();
t2.Start();
_contdown.Wait();
Console.WriteLine("Both operations have been completed.");
_contdown.Dispose();
}
static CountdownEvent _contdown = new CountdownEvent(2);
static void PerformOperation(string message, int seconds)
{
Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine(message);
_contdown.Signal();
}
在上面这个例子中,我通过使用_contdown 实例化为等待两个线程。
PerformOperation 中通过_contdown.Signal();来减少数量,如果减少到0的时候那么这个时候_contdown.Wait();就可以过了。
可能我这样解释比较牵强吧,可以跑一下就很清晰了。
CountdownEvent 还有很多方法,可以点进去看一下,但是功能和原理差不多是这个。