public void Start() { lock (pausingSync) { switch (state) { case State.Started: return; case State.Paused: Resume(); return; } machineStartedAt = CustomDateTime.Now; foreach (var ownLife in ownLifes.OrderBy(x => x is ICPU ? 1 : 0)) { this.NoisyLog("Starting {0}.", GetNameForOwnLife(ownLife)); ownLife.Start(); } LocalTimeSource.Resume(); this.Log(LogLevel.Info, "Machine started."); state = State.Started; var machineStarted = StateChanged; if (machineStarted != null) { machineStarted(this, new MachineStateChangedEventArgs(MachineStateChangedEventArgs.State.Started)); } } }
private void Resume() { lock (pausingSync) { LocalTimeSource.Resume(); foreach (var ownLife in ownLifes.OrderBy(x => x is ICPU ? 1 : 0)) { this.NoisyLog("Resuming {0}.", GetNameForOwnLife(ownLife)); ownLife.Resume(); } this.Log(LogLevel.Info, "Machine resumed."); state = State.Started; var machineStarted = StateChanged; if (machineStarted != null) { machineStarted(this, new MachineStateChangedEventArgs(MachineStateChangedEventArgs.State.Started)); } } }