//create a ManualResetEvent object var mre = new ManualResetEvent(false); //set up a thread to wait until the event is signaled var thread = new Thread(() => { Console.WriteLine("Waiting for event to be signaled..."); mre.WaitOne(); //wait for ManualResetEvent to be signaled Console.WriteLine("Event has been signaled!"); }); //start the thread thread.Start(); //signal the event after some time Thread.Sleep(2000); mre.Set(); //signal ManualResetEvent //close the ManualResetEvent object mre.Close();
// create a ManualResetEvent object var mre = new ManualResetEvent(false); // set up a thread to wait until the event is signaled var thread = new Thread(() => { Console.WriteLine("Waiting for event to be signaled..."); mre.WaitOne(); //wait for ManualResetEvent to be signaled Console.WriteLine("Event has been signaled!"); }); //start the thread thread.Start(); //close the ManualResetEvent object mre.Close();In this example, a ManualResetEvent object is created with an initial state of false. A thread is set up to wait for the ManualResetEvent to be signaled using the WaitOne() method. However, the Close() method is called before the ManualResetEvent is signaled. This will result in an ObjectDisposedException being thrown when the thread tries to wait for the ManualResetEvent to be signaled. Package Library: System.Threading.