protected override void Dispose(bool disposing) { if (!_isDisposed) { _npmController.Dispose(); if (null != _npmIdleTimer) { _npmIdleTimer.Dispose(); _npmIdleTimer = null; } if (null != _npmController) { _npmController.CommandStarted -= NpmController_CommandStarted; _npmController.OutputLogged -= NpmController_OutputLogged; _npmController.ErrorLogged -= NpmController_ErrorLogged; _npmController.ExceptionLogged -= NpmController_ExceptionLogged; _npmController.CommandCompleted -= NpmController_CommandCompleted; } _devModulesNode.Dispose(); _optionalModulesNode.Dispose(); _isDisposed = true; } base.Dispose(disposing); }