public Task <TOutput> InvokeAsync(TParameters parameters, IProgress <OperationProgress> progress, CancellationToken cancellationToken) { Verify.Argument.IsNotNull(parameters, "parameters"); var command = CreateCommand(parameters); var parser = CreateParser(); var stdOutReceiver = new AsyncTextParser(parser); var stdErrReceiver = new AsyncTextReader(); return(_commandExecutor .ExecuteCommandAsync( command, stdOutReceiver, stdErrReceiver, GetExecutionFlags(), cancellationToken) .ContinueWith(task => { int exitCode = TaskUtility.UnwrapResult(task); if (exitCode != 0) { HandleNonZeroExitCode(stdErrReceiver, exitCode); } return parser.GetResult(); }, cancellationToken, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default)); }
public TOutput Invoke(TParameters parameters) { Verify.Argument.IsNotNull(parameters, "parameters"); var command = CreateCommand(parameters); var parser = CreateParser(); var stdOutReceiver = new AsyncTextParser(parser); var stdErrReceiver = new AsyncTextReader(); var exitCode = _commandExecutor.ExecuteCommand( command, stdOutReceiver, stdErrReceiver, GetExecutionFlags()); if (exitCode != 0) { HandleNonZeroExitCode(stdErrReceiver, exitCode); } return(parser.GetResult()); }
public async Task <TOutput> InvokeAsync(TParameters parameters, IProgress <OperationProgress> progress, CancellationToken cancellationToken) { Verify.Argument.IsNotNull(parameters, nameof(parameters)); var command = CreateCommand(parameters); var parser = CreateParser(); var stdOutReceiver = new AsyncTextParser(parser); var stdErrReceiver = new AsyncTextReader(); var processExitCode = await _commandExecutor .ExecuteCommandAsync(command, stdOutReceiver, stdErrReceiver, GetExecutionFlags(), cancellationToken) .ConfigureAwait(continueOnCapturedContext: false); if (processExitCode != 0) { HandleNonZeroExitCode(stdErrReceiver, processExitCode); } return(parser.GetResult()); }