private ExecuteResult Execute(Benchmark benchmark, ILogger logger, string exeName, string workingDirectory, string args, IDiagnoser diagnoser) { if (consoleHandler == null) { consoleHandler = new ConsoleHandler(logger); Console.CancelKeyPress += consoleHandler.EventHandler; } try { using (var process = new Process { StartInfo = CreateStartInfo(benchmark, exeName, args, workingDirectory) }) { var loggerWithDiagnoser = new SynchronousProcessOutputLoggerWithDiagnoser(logger, process, diagnoser, benchmark); return Execute(process, benchmark, loggerWithDiagnoser, diagnoser, logger); } } finally { consoleHandler.ClearProcess(); } }