Пример #1
0
        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);
            }
        }
Пример #2
0
        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");
            }
        }