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(); }
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(); }