CompositeDisposable StartProcess(Process process, TimeSpan? monitorOutput = null, TimeSpan? monitorResponding = null) { process.Validate(); process.Start(); _launched.OnNext(Tuple.Create(process.StartInfo, process.Id)); return SetupMonitoringDisposable(process, monitorOutput, monitorResponding); }