In this example, a new ManualResetEvent object is created with an initial state of false. The WaitOne() method is then called on the object, which will cause the thread to wait until the event has been signaled by calling the Set() method on the ManualResetEvent object from another thread. Once the event is signaled, the program will print "Event has been signaled!" to the console. Example 2:csharp ManualResetEvent mre = new ManualResetEvent(false); Thread t = new Thread(() => { Console.WriteLine("Thread waiting for event to be signaled..."); mre.WaitOne(); Console.WriteLine("Event has been signaled!"); }); t.Start(); // Wait a few seconds before setting the event Thread.Sleep(3000); // Signal the event mre.Set(); ``` In this example, a new ManualResetEvent object is created with an initial state of false. A new thread is then started that waits for the event to be signaled using the WaitOne() method. The main thread then waits for a few seconds using Thread.Sleep() before calling the Set() method on the ManualResetEvent object to signal the event. Once the event is signaled, the program will print "Event has been signaled!" to the console. In both examples, the ManualResetEvent class is used to synchronize the actions of two threads by waiting for an event to be signaled. The class is part of the System.Threading namespace in C#, which is included in the .NET Framework.