static TimeSpan waitTime = new TimeSpan(0, 0, 5);
static WaitHandle[] waitHandles = new WaitHandle[]
{
new AutoResetEvent(false)
//new AutoResetEvent(false)
};
Thread th;
private void button1_Click(object sender, EventArgs e)
{
//DateTime dt = DateTime.Now;
ThreadPool.QueueUserWorkItem(new WaitCallback(DoTask), waitHandles[0]);
WaitHandle.WaitAll(waitHandles);
// dt = DateTime.Now;
ThreadPool.QueueUserWorkItem(new WaitCallback(DoTask), waitHandles[0]);
int index = WaitHandle.WaitAny(waitHandles);
}
static void DoTask(Object state)
{
AutoResetEvent are = (AutoResetEvent)state;
Thread.Sleep(5000);
//int time = 1000 * r.Next(2, 10);
// Console.WriteLine("Performing a task for {0} milliseconds.", time);
// Thread.Sleep(time);
are.Set();
}
static void Work()
{
Thread.Sleep(waitTime);
}