В настоящее время я пытаюсь решить проблему с выпуском ресурсов FlowDocument. Я загружаю RTF-файл и помещаю его в FlowDocument с помощью TextRange.Load. Я заметил, что после этого он сохраняет эти ресурсы и GC не собирает их. Я запустил профилировщик памяти и увидел, что это правда. Я также сузил его до того места, где я загружаю, фактически помещаю rtf в FlowDocument. Если я этого не сделаю, тогда все в порядке. Итак, я знаю, что это проблема.
Я надеюсь, что у меня есть какие-то указания относительно того, как я могу решить эту проблему. Вот код, который загружает RTF и все. Я закомментировал весь другой код и даже поместил его в его собственную область, а также попробовал GC.Collect (). Любая помощь с благодарностью.
EDIT:
Вот мой код в полном объеме на данный момент. Я взял все остальное, кроме самого необходимого, чтобы оно заработало. Проблема все еще там. Как вы можете видеть, 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, и я наблюдаю за использованием памяти процессом моего приложения. Когда я запускаю приведенный выше код, приложение переходит от 40000 К до 70000 К при выполнении TextRange.Load () (это большой 400-страничный RTF), и после его завершения оно падает до 61 000 К и остается там. Я ожидаю, что он снизится до 40000 К или, по крайней мере, очень близко к нему.
Как я уже упоминал ранее, я использовал профилировщик памяти и увидел, что там было много абзацев, Run..ect. объекты все еще живы впоследствии.