/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Threading;
namespace Client.Chapter_15___Threading
{
publicclass ManagingThreads
{
public AutoResetEvent A = new AutoResetEvent(false);
public AutoResetEvent[] B = new AutoResetEvent[3];
publicstaticint Main()
{
ManagingThreads M = new ManagingThreads();
M.InitEvents();
Thread T = new Thread(new ThreadStart(M.MyNewThread));
T.Start();
//T.Join(); //Blocks this thread until T Stops
Console.WriteLine("Waiting!");
M.A.WaitOne();
WaitHandle.WaitAll(M.B);
return 0;
}
publicvoid InitEvents()
{
for (int i = 0; i < 3; i++)
{
B[i] = new AutoResetEvent(false);
}
}
publicvoid MyNewThread()
{
Console.WriteLine("MyNewThread Called");
A.Set();
B[0].Set();
B[1].Set();
B[2].Set();
}
}
}