コード例 #1
0
        internal void RemovePage(VirtualPage page)
        {
            if (page.IsDisposed)
            {
                return;
            }

            Debug.Assert(page != null);
            //Debug.Assert( !page.IsRestarting );

            Debug.Assert(!page.IsDirty);

            // A filled page is being removed.  Change the version.
            this.IncrementVersion();

            // Update the table of content of the page's ParentVirtualList
            page.ParentVirtualList.TableOfContent.RemovePage(page);

            m_pageNodes.Remove(page);

            Debug.WriteLineIf(VirtualPageManager.DebugDataVirtualization, "Removed Page: " + page.ToString());

            // Dispose the page since it will never be reused
            page.Dispose();
        }
コード例 #2
0
        public void Dispose()
        {
            while (m_virtualPages.Count > 0)
            {
                // Remove the page from every Dictionaries and
                // also from m_virtualPages
                VirtualPage page = m_virtualPages[0];
                this.RemovePage(page);
                page.Dispose();
            }

            Debug.Assert(m_objectVersusIndexDictionary.Count == 0);
            Debug.Assert(m_indexVersusPageDictionary.Count == 0);
            Debug.Assert(m_virtualPages.Count == 0);

            m_objectVersusIndexDictionary.Clear();
            m_indexVersusPageDictionary.Clear();
            m_virtualPages.Clear();
        }