private async Task RunConsoleBatch(IArguments args) { var appProvider = GetApplicationProvider(); var opts = args.GetOptions(appProvider); using (var batchRunner = new BatchRunner(appProvider, Console.Out, new ConsoleProgressWriter())) { await batchRunner.BatchRun(opts).ConfigureAwait(false); } }
public async Task <bool> ExecuteAsync() { if (!m_IsExecuting) { m_IsExecuting = true; m_CurrentCancellationToken = new CancellationTokenSource(); m_LogWriter.Log += OnLog; m_PrgHander.ProgressChanged += OnProgressChanged; m_PrgHander.JobScopeSet += OnJobScopeSet; m_PrgHander.Completed += OnJobCompleted; try { using (var batchRunner = new BatchRunner(m_AppProvider, m_LogWriter, m_PrgHander)) { var cancellationToken = m_CurrentCancellationToken.Token; return(await batchRunner.BatchRun(m_Job, cancellationToken).ConfigureAwait(false)); } } catch (Exception ex) { m_LogWriter.WriteLine(ex.ParseUserError(out _)); throw; } finally { m_LogWriter.Log -= OnLog; m_PrgHander.ProgressChanged -= OnProgressChanged; } } else { throw new Exception("Execution is already running"); } }