阅读量:0
在C#中,可以使用ManualResetEvent类来实现线程间的同步和通信。下面是一个简单的示例代码,演示如何在C#中使用ManualResetEvent:
using System; using System.Threading; class Program { static ManualResetEvent manualResetEvent = new ManualResetEvent(false); static void Main(string[] args) { Thread thread1 = new Thread(() => { Console.WriteLine("Thread 1 is waiting..."); manualResetEvent.WaitOne(); Console.WriteLine("Thread 1 is now running."); }); Thread thread2 = new Thread(() => { Console.WriteLine("Thread 2 is waiting..."); manualResetEvent.WaitOne(); Console.WriteLine("Thread 2 is now running."); }); thread1.Start(); thread2.Start(); Thread.Sleep(2000); // 等待2秒钟 manualResetEvent.Set(); // 发信号,让等待的线程继续执行 thread1.Join(); thread2.Join(); } }
在上面的示例代码中,我们创建了一个ManualResetEvent实例并初始化为false。然后创建了两个线程(thread1和thread2),它们都在等待ManualResetEvent对象的信号。在主线程中等待2秒钟后,调用Set方法发送信号,让等待的线程继续执行。
需要注意的是,ManualResetEvent对象在调用Set方法后会一直保持信号状态,直到调用Reset方法将其重新设置为非信号状态。