Esempio n. 1
0
 public static async Task<ReactiveProcess> StartAsync(string fileName, string arguments) {
     var p = new ReactiveProcess {StartInfo = new ProcessStartInfo(fileName, arguments)};
     try {
         await p.StartAsync().ConfigureAwait(false);
     } catch {
         p.Dispose();
         throw;
     }
     return p;
 }
Esempio n. 2
0
        async Task<ProcessExitResult> LaunchAndWaitForExitAsync(ReactiveProcess process, TimeSpan? monitorOutput,
            TimeSpan? monitorResponding, CancellationToken token) {
            var task = process.StartAsync();
            _launched.OnNext(Tuple.Create(process.StartInfo, process.Id));

            using (SetupMonitoringDisposable(process, monitorOutput, monitorResponding))
            using (token.Register(process.Kill))
                await task.ConfigureAwait(false);
            _terminated.OnNext(Tuple.Create(process.StartInfo, process.ExitCode, process.Id));
            return new ProcessExitResult(process.ExitCode, process.Id, process.StartInfo);
        }