void Loop(StartCmdOptions StartOptions) { if (StartOptions.Length > 0) { var elapsed = 0; Write(TimeSpan.Zero); while (elapsed++ < StartOptions.Length) { Thread.Sleep(1000); Write(new string('\b', 8) + TimeSpan.FromSeconds(elapsed)); } Write(new string('\b', 8)); } else { const string recordingText = "Press p to pause or resume, q to quit"; WriteLine(recordingText); char ReadChar() { if (IsInputRedirected) { var line = ReadLine(); if (line != null && line.Length == 1) { return(line[0]); } return(char.MinValue); } return(char.ToLower(ReadKey(true).KeyChar)); } char c; do { c = ReadChar(); if (c != 'p') { continue; } _recordingModel.OnPauseExecute(); if (_recordingModel.RecorderState != RecorderState.Paused) { WriteLine("Resumed"); } } while (c != 'q'); } }