public override int Execute(CommandContext context, Settings settings) { if (string.IsNullOrWhiteSpace(settings.Input)) { settings.Input = _inputOptions.Filename; } settings.Framerate ??= _inputOptions.Framerate; if (string.IsNullOrWhiteSpace(settings.Output)) { settings.Output = _outputOptions.Filename; } AnsiConsole.Progress() .AutoRefresh(false) .AutoClear(false) .HideCompleted(true) .Columns(new TaskDescriptionColumn { Alignment = Justify.Left }) .Start(ctx => { var loopTask = ctx.AddTask("Starting message loop"); if (!_messageLoopService.Start(loopTask)) { return; } while (!loopTask.IsFinished) { Thread.Sleep(20); } var playerTask = ctx.AddTask("Starting track list player"); if (_trackListPlayer.Setup(playerTask, settings.Input, settings.Output, _outputOptions.Format, FrameRateExtensions.FromDouble((double)settings.Framerate))) { _trackListPlayer.Render(ctx); } }); return(1); }