Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }