如何在C#中使用ManualResetEvent

avatar
作者
猴君
阅读量: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方法将其重新设置为非信号状态。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!