📅  最后修改于: 2023-12-03 15:29:32.432000             🧑  作者: Mango
AutoResetEvent是C#中的一种同步对象,可用于在多线程间同步操作。AutoResetEvent被设计为一种锁定机制,允许一个线程在某个共享状态满足给定条件时暂停,直到另一个线程使该共享状态发生变化并利用信号通知该线程继续执行。
以下是AutoResetEvent的一些重要特点和用法:
using System.Threading;
class Program
{
// 创建一个AutoResetEvent对象
static AutoResetEvent _autoResetEvent = new AutoResetEvent(false);
static void Main(string[] args)
{
// 创建两个线程来执行某个操作
Thread thread1 = new Thread(() =>
{
Console.WriteLine("Thread1 is waiting for the AutoResetEvent");
// 在AutoResetEvent对象上等待
_autoResetEvent.WaitOne();
Console.WriteLine("Thread1 is now awake");
});
Thread thread2 = new Thread(() =>
{
Console.WriteLine("Thread2 is doing some work...");
Thread.Sleep(2000);
Console.WriteLine("Thread2 has finished and is signaling the AutoResetEvent");
// 向AutoResetEvent对象发送信号
_autoResetEvent.Set();
});
// 启动两个线程
thread1.Start();
thread2.Start();
// 等待两个线程执行完毕
thread1.Join();
thread2.Join();
Console.WriteLine("Done.");
Console.ReadKey();
}
}
上述代码中,我们创建了一个AutoResetEvent对象,并在两个线程中使用它。主线程启动线程1和线程2。线程1在AutoResetEvent上等待,直到线程2调用Set方法向AutoResetEvent对象发送信号。在此之后,线程1被唤醒并继续执行。主线程等待两个线程执行完毕以打印“Done.”,之后程序停止执行。