public void Exit() { switch (_currentMode) { case ApplicationMode.Live: _recordService.Stop(); break; case ApplicationMode.Play: _playbackService.Stop(); break; case ApplicationMode.Waiting: Logger.Info("All modes already stopped"); break; default: throw new ArgumentOutOfRangeException(); } _restServer.Stop(); _streamingServer.Stop(); _playbackService.FrameAvailable -= _streamingServer.Send; _recordService.FrameAvailable -= _streamingServer.Send; Logger.Info("Application exited"); }