我希望得到一些指导,了解如何解决这个问题。这里是加载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任务管理器,并观察我的应用程序进程正在使用的内存使用情况。当我运行上面的代码时,应用程序从40,000K增加到70,000K,同时进行TextRange.Load() (这是一个大的400页RTF),一旦完成后它降至61,000K并保持不变。我的期望是它会降回到40,000K或者非常接近它。
正如我之前提到的,我使用了一个内存分析器,发现有很多段落、运行等对象仍然存在。
.loadby sos clr
。 - maxp