Tag: 流文档

C#中的FlowDocument内存问题

我目前正在尝试处理释放FlowDocument资源的问题。 我正在加载一个rtf文件并将其放入带有TextRange.Load的FlowDocument中。 我注意到,在它执行此操作后,它会保留这些资源,GC不会收集它。 我已经运行了一个内存分析器,并且已经看到这是真的。 我还把它缩小到我加载实际将rtf放入FlowDocument。 如果我不这样做,那么一切都很好。 所以我知道这是问题所在。 我希望对如何解决这个问题提供一些指导。 这是加载rtf和所有内容的代码。 我已经评论了所有其他代码,甚至把它放在自己的范围内,并尝试了GC.Collect()。 任何帮助是极大的赞赏。 编辑:这是我目前的完整代码。 除了最基本的要素之外,我已经取出了其他所有东西来让它运行起来。 问题仍然存在。 如您所见,FlowDocument和TextRange未在其他任何地方引用。 public LoadRTFWindow(string file) { InitializeComponent(); using (FileStream reader = new FileStream(file, FileMode.Open)) { FlowDocument doc = new FlowDocument(); TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd); range.Load(reader, System.Windows.DataFormats.Rtf); } GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } 我发现这篇文章 ,我希望能帮助我解决我的问题,但我没有运气。 非常感谢任何类型的帮助。 谢谢。 编辑:我想我应该提到我检查这个的主要方式。 我打开了Windows任务管理器,正在观察应用程序进程正在使用的内存使用情况。 当我运行上面的代码时,应用程序在执行TextRange.Load()时会从40,000K变为70,000K(这是一个400页的大型RTF),一旦完成,它就会下降到61,000K并保持在那里。 我的期望是它会回落到40,000K或者至少非常接近它。 正如我之前提到的,我使用了一个内存分析器,看到有很多段落,Run..ect。 […]