public override void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider) { base.Associate(metaFeature, serviceProvider); m_monitorDocumentsService = serviceProvider.GetService <IMonitorDocumentsService>(); Debug.Assert(m_monitorDocumentsService != null); if (m_monitorDocumentsService != null) { m_monitorDocumentsService.ForAllOpenedDocuments(delegate(DocumentEventArgs args) { OnDocumentOpened(m_monitorDocumentsService, args); }); m_monitorDocumentsService.DocumentOpened += OnDocumentOpened; m_monitorDocumentsService.DocumentClosed += OnDocumentClosed; } }
protected override void Dispose(bool disposing) { Exception disposeException = null; try { if (disposing) { if (m_monitorDocumentsService != null) { m_monitorDocumentsService.DocumentOpened -= OnDocumentOpened; m_monitorDocumentsService.DocumentClosed -= OnDocumentClosed; m_monitorDocumentsService = null; } if (m_diagramContexts != null) { foreach (DiagramContext diagramContext in m_diagramContexts.Values) { try { diagramContext.Dispose(); } catch (Exception ex) { disposeException = ex; } } m_diagramContexts = null; } if (m_designerContext != null) { try { m_designerContext.Dispose(); m_designerContext = null; } catch (Exception ex) { disposeException = ex; } } } else { m_monitorDocumentsService = null; m_designerContext = null; m_diagramContexts = null; } } finally { base.Dispose(disposing); // rethrow dispose exception if any if (disposeException != null) { throw disposeException; } } }