public override void Stop() { ActionQueue.Enqueue(new StopAction()); //Don't join on the current thread, that would block forever if(Thread.CurrentThread != _loop ) { _loop.Join(); } base.Stop(); }