public override void Start() { if( 1 == Interlocked.Exchange(ref _is_started, 1) ) { //We are calling start again, that is not good. throw new Exception("Cannot start more than once"); } _loop.Start(); }