public ProcessExitResult LaunchAndProcess(LaunchAndProcessInfo info) { return LaunchAndProcessAsync(info).WaitAndUnwrapException(); }
public async Task<ProcessExitResult> LaunchAndProcessAsync(LaunchAndProcessInfo info) { using (var process = new ReactiveProcess {StartInfo = info.StartInfo.EnableRedirect()}) { SetupStandardOutput(info, process); SetupStandardError(info, process); return await LaunchAndWaitForExitAsync(process, info.MonitorOutput, info.MonitorResponding, info.CancellationToken) .ConfigureAwait(false); } }
static void SetupStandardOutput(LaunchAndProcessInfo info, ReactiveProcess process) { if (info.StandardOutputAction == null) return; if (!info.StartInfo.RedirectStandardOutput) throw new InvalidOperationException("Not redirected output"); process.StandardOutputObservable.Subscribe(data => info.StandardOutputAction(process, data)); }
public Task<ProcessExitResult> LaunchAndProcessAsync(LaunchAndProcessInfo info) { Contract.Requires<ArgumentNullException>(info != null); return default(Task<ProcessExitResult>); }