public bool Launch(int timeout) { LogManager.Log(Logger, LogLevel.Information, _processStartInfo.FileName + " " + _processStartInfo.Arguments, "Launch command"); try { using (Process process = Process.Start(_processStartInfo)) { bool success = process.WaitForExit(timeout * 1000); DataOutput = DataOutput.Append(process.StandardOutput.ReadToEnd()); ErrorOutput = ErrorOutput.Append(process.StandardError.ReadToEnd()); LogManager.Log(Logger, LogLevel.Debug, DataOutput.ToString(), "DEBUG"); LogManager.Log(Logger, LogLevel.Debug, ErrorOutput.ToString(), "DEBUG"); HasTimeout = !success; ExitCode = process.ExitCode; if (HasTimeout) { LogManager.Log(Logger, LogLevel.Error, $"Le process n'a pas pu être exécuté dans le temps imparti.", "Timeout"); return(false); } if (ExitCode != 0) { LogManager.Log(Logger, LogLevel.Error, $"Le process n'a pas pu être exécuté correctement, erreur {process.ExitCode}.", "Error"); return(false); } return(true); } } catch (Exception ex) { LogManager.Log(Logger, LogLevel.Critical, $"Exception : Le process n'a pas pu être exécuté correctement : {ex}.", "Exception"); return(false); } }