如何从C#中的进程中捕获exception

我在这里有一个接受跑步者计划,看起来像这样:

public Result Run(CommandParser parser) { var result = new Result(); var watch = new Stopwatch(); watch.Start(); try { _testConsole.Start(); parser.ForEachInput(input => { _testConsole.StandardInput.WriteLine(input); return _testConsole.TotalProcessorTime.TotalSeconds < parser.TimeLimit; }); if (TimeLimitExceeded(parser.TimeLimit)) { watch.Stop(); _testConsole.Kill(); ReportThatTestTimedOut(result); } else { result.Status = GetProgramOutput() == parser.Expected ? ResultStatus.Passed : ResultStatus.Failed; watch.Stop(); } } catch (Exception) { result.Status = ResultStatus.Exception; } result.Elapsed = watch.Elapsed; return result; } 

_testConsole是一个Process适配器,它将常规的.net进程包装成更可行的东西。 但是我很难从启动过程中捕获任何exception(即catch语句在这里毫无意义)我正在使用类似的东西:

 _process = new Process { StartInfo = { FileName = pathToProcess, UseShellExecute = false, CreateNoWindow = true, RedirectStandardInput = true, RedirectStandardOutput = true, RedirectStandardError = true, Arguments = arguments } }; 

设置过程。 有任何想法吗?

exception不会从一个进程流向另一个进程。 您可以做的最好的事情是监视进程的退出代码 – 通常,退出代码0表示成功,任何其他退出代码表示错误。

当然,对于你正在推出的流程来说,情况是否是另一回事。