roblema de memória @FlowDocument em C #
No momento, estou tentando resolver um problema com a liberação de recursos do FlowDocument. Estou carregando um arquivo rtf e colocando-o em um FlowDocument com TextRange.Load. Percebi que, depois disso, ele se apega a esses recursos e o GC não os coleta. Eu executei um perfilador de memória e vi que isso é verdade. Também reduzi para onde eu carregava, na verdade, coloquei o rtf no FlowDocument. Se eu não fizer isso, está tudo bem. Então eu sei que esse é o problem
Espero alguma orientação sobre como resolver esse problema. Aqui está o código que carrega o rtf e tudo. Eu comentei todo o outro código e até o coloquei em seu próprio escopo, bem como tentei GC.Collect (). Qualquer ajuda é muito apreciada
EDIT: Aqui está o meu código na íntegra no momento. Tirei todo o resto, exceto o essencial para fazê-lo funcionar. O problema ainda está lá. Como você pode ver, FlowDocument e TextRange não são mencionados em nenhum outro luga
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();
}
Eu encontreiesta postage, o que eu esperava que me ajudasse a resolver meu problema, mas não tive sorte. Qualquer tipo de ajuda é muito apreciada. Obrigado
EDIT: Acho que devo mencionar a principal maneira de verificar isso. Tenho o Windows Task Manager aberto e estou observando o uso de memória que o processo do meu aplicativo está usando. Quando executo o código acima, o aplicativo passa de 40.000 K para 70.000 K ao executar o TextRange.Load () (este é um grande RTF de 400 páginas) e, uma vez concluído, cai para 61.000 K e permanece lá. Minha expectativa é que ele caia para 40.000K ou pelo menos muito perto del
Como mencionei anteriormente, usei um perfilador de memória e vi que havia MUITOS parágrafos, Run..ect. objetos ainda estão vivos depoi