ManualResetEvent主要用于多线程的管理。
1、实例化一个对象
/// <summary>
/// 设为True,线程不阻塞
/// 设为false,调用set()之前,阻塞
/// </summary>
public static ManualResetEvent mre = new ManualResetEvent(true);
2、方法作用
mre.Reset();
将事件状态设为无信号状态,导致线程阻塞
mre.Set();
将事件状态设为有信号状态,允许等待线程继续
上面两个方法理解为线程阻塞的开关信号。阻塞信号开,则所有被阻塞的线程等待;阻塞信号关,则所有被阻塞的线程开始执行
mre.WaitOne();
阻塞线程,直到调用Set方法才能继续执行;一般用在各个子线程中