public ClassWorkManager.Unit GetResults()
 {
     ClassWorkManager.Unit TempWorkUnit;
       TempWorkUnit=this.WorkUnit;
       this.WorkUnit = null;
       ReadyForWorkEvent.Set();
       return TempWorkUnit ;
 }
 public void Work(ClassWorkManager.Unit WorkUnit )
 {
     ReadyForWorkEvent.Reset();
       if (WorkUnit == null)
       {
     throw new Exception("Null work unit passed in");
       }
       this.WorkUnit = WorkUnit;
       WorkAvailable.Set();
 }
        private void InitThread()
        {
            //Start Multithread
            ClassWorkManager.Unit[] work = null;
            ClassWorkManager.WorkFinished finished = null;

            ClassWorkManager.WorkToDo worktodo = new ClassWorkManager.WorkToDo(DoWork);
            //List of tasks
            int n = _listTSuite.Count;

            // each of work respect with a task
            work = new ClassWorkManager.Unit[n];
            for (int i = 0; i < n; i++)
            {
                work[i] = new ClassWorkManager.Unit(worktodo, _listTSuite[i]);
            }

            finished = new ClassWorkManager.WorkFinished(Finished);
            _Manager = new ClassWorkManager(this.numOfThread);
            _Manager.DoWork(work, finished);
        }