public void Pause() { lock (pausingSync) { switch (state) { case State.Paused: return; case State.NotStarted: goto case State.Paused; } LocalTimeSource.Pause(); foreach (var ownLife in ownLifes.OrderBy(x => x is ICPU ? 0 : 1)) { var ownLifeName = GetNameForOwnLife(ownLife); this.NoisyLog("Pausing {0}.", ownLifeName); ownLife.Pause(); this.NoisyLog("{0} paused.", ownLifeName); } state = State.Paused; var machinePaused = StateChanged; if (machinePaused != null) { machinePaused(this, new MachineStateChangedEventArgs(MachineStateChangedEventArgs.State.Paused)); } this.Log(LogLevel.Info, "Machine paused."); } }