internal void Quit() { AutoResetSignal signal = new AutoResetSignal(); this.scheduledTasks.Enqueue(new Tuple <Func <bool>, NullSignal>(() => false, signal)); if (this.thread.IsAlive) { signal.Wait(); } }
internal void ScheduleAndWait(Action task) { AutoResetSignal signal = new AutoResetSignal(); this.scheduledTasks.Enqueue(new Tuple <Func <bool>, NullSignal>(() => { task.Invoke(); return(true); }, signal)); if (this.thread.IsAlive) { signal.Wait(); } }