Register Wait handle for auto reset event : AutoResetEvent « Thread « C# / CSharp Tutorial






using System;
using System.Threading;

class MainClass
{
    private static void EventHandler(object state, bool timedout) 
    {
        Console.WriteLine("timedout:"+timedout);
        Console.WriteLine("state:"+state);
        Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.ffff"));
    }

    public static void Main() 
    {
        AutoResetEvent autoEvent = new AutoResetEvent(false);

        string state = "AutoResetEvent signaled.";

        RegisteredWaitHandle handle = ThreadPool.RegisterWaitForSingleObject(
            autoEvent, EventHandler, state, 3000, false);


        Thread.Sleep(5000);
        
        autoEvent.Set();
        
        Console.WriteLine("Unregistering wait operation.");
        handle.Unregister(null);
    }
}
timedout:True
state:AutoResetEvent signaled.
14:14:00.0937
Unregistering wait operation.








20.24.AutoResetEvent
20.24.1.AutoResetEvent in action
20.24.2.Register Wait handle for auto reset event
20.24.3.Handling both time-outs and signals with a WaitOrTimerCallback delegate.