Je tente actuellement de résoudre un problème lié à la libération d'une ressource FlowDocument. Je charge un fichier rtf et le place dans un FlowDocument avec TextRange.Load. J'ai remarqué qu'après cela, cela tient sur ces ressources et GC ne le collecte pas. J'ai couru un profileur de mémoire et ai vu que c'est vrai. Je l'ai également rétréci jusqu'à ce que je charge effectivement mettre le RTF dans le FlowDocument. Si je ne fais pas ça, alors tout va bien. Donc, je sais que c'est le problème.Problème de mémoire FlowDocument en C#
J'espère obtenir quelques conseils sur la façon dont je peux résoudre ce problème. Voici le code qui charge le RTF et tout. J'ai commenté tous les autres codes et même le mettre dans sa propre portée ainsi que essayé GC.Collect(). Toute aide est grandement appréciée.
EDIT: Voici mon code en entier pour le moment. J'ai sorti tout le reste, sauf l'essentiel pour le faire fonctionner. Le problème est toujours là. Comme vous pouvez le voir, FlowDocument et TextRange ne sont référencés nulle part ailleurs.
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();
}
J'ai trouvé this post, que j'espérais me aider à résoudre mon problème mais je pas eu de chance avec elle. Tout type d'aide est grandement apprécié. Je vous remercie.
EDIT: Je pense que je devrais mentionner la façon dont je vérifie cela. J'ai Windows Gestionnaire de tâches ouvert et je regarde l'utilisation de la mémoire utilise le processus de mon application. Quand je cours le code ci-dessus l'application va de 40.000K à 70.000K en faisant le TextRange.Load() (c'est un grand RTF de 400 pages) et une fois que cela finit il descend à 61.000K et reste là. Je m'attends à ce qu'il redescende à 40 000K ou du moins très proche.
Comme je l'ai mentionné plus tôt, j'ai utilisé un profileur de mémoire et j'ai vu qu'il y avait beaucoup de paragraphes, Run..ect. objets encore vivants après.
Je ne référence le parent nulle part. Donc, je ne pense pas que le FlowDocumentPageViewer est mon problème. J'ai rempli le code plus dans le message original. – Jasson