void DoTasks() { ITask* task ; do { { CriticalSectionHelper c; task = Tasks.Dequeue(); } if(task!=NULL) task->DoTask(); } while(task!=NULL); }