/// <summary>
 /// perform wakeup
 /// </summary>
 public void Wakeup()
 {
     WakeupEvent.Set();
 }
 /// <summary>
 /// Wait until WakeupEvent has been set
 /// If you need timeout params or WaitAny, please access to WakeupEvent itself
 /// </summary>
 public void WaitUntilWakeup()
 {
     WakeupEvent.Reset();
     WakeupEvent.WaitOne();
 }