void Run() { while (EndLoop == false) { while (QueueEmpty == false) { if (EndLoop == true) { return; } WorkItem workItem = GetNext(); workItem.CallBack(); } m_ItemAdded.WaitOne(); } }