private void TryResume() { lock (_suspendLock) { if (!_isSuspended) { return; } _isSuspended = false; _suspendLock.PulseAll(); } }
private void ProcessEmulationStateMessage(EmulationStates newState) { this.AddInfoLog(LocalizedStrings.Str1121Params, State, newState); State = newState; switch (newState) { case EmulationStates.Stopped: { break; } case EmulationStates.Stopping: { SendInMessage(new DisconnectMessage()); break; } case EmulationStates.Starting: { SendEmulationState(EmulationStates.Started); break; } case EmulationStates.Started: { _suspendLock.PulseAll(); break; } case EmulationStates.Suspending: { SendEmulationState(EmulationStates.Suspended); break; } case EmulationStates.Suspended: { State = newState; _suspendLock.Wait(); break; } default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Остановить эмуляцию. /// </summary> public void Stop() { SetEmulationState(EmulationStates.Stopping); _suspendLock.PulseAll(); }