public void Start() { if (Disposed) { throw new ObjectDisposedException(GetType().Name); } if (_process != null) { Clean(); } _process = _manager.GetProcess(_executable, _parameters); _process.Exited += ProcessExited; try { _process.Start(); Log.Debug("Started !"); } catch (Exception e) { if (_process != null) { _process.Dispose(); _process = null; } Log.Error(string.Format("Unable to start command {0}: {1}", this, e.Message), e); } }