//TODO: add timeout public void Shutdown() { EngineState = EngineState.ShuttingDown; var shutdown = new EngineShutdown(this); shutdown.Run(() => { EngineState = EngineState.ShutDown; }); }