سؤال

أنا أبني تنسيق FlowDocument من XML.XML تم تشكيل يتكون أساسا من 10000 العقد مع كل عقدة واحدة مع 6 حرف قيمة سلسلة.

تحليل XML إلى XElement وبناء FlowDocument في الذاكرة يستغرق حوالي 5 ثوان.تعيين FlowDocument إلى Document ممتلكات RichTextBox في طلبي ثم يأخذ حوالي 7 دقائق ، maxes وحدة المعالجة المركزية في ذلك الوقت.

هنا هو قطعة من التعليمات البرمجية:

// The following six lines of code execute in about 5 seconds

var xml = XElement.Parse(response.Data);

PrettyXmlConverter px = new PrettyXmlConverter();
FlowDocument fd = px.Render(xml);

Paragraph p = new Paragraph();
p.Inlines.Add(new Run(response.TimeStamp.ToShortDateString() + " " + response.TimeStamp.ToLongTimeString()));
fd.Blocks.InsertBefore(fd.Blocks.ElementAt(0), p);

// This line of code takes about 7 minutes and maxes out the CPU for that time.
tbResponse.Document = fd;

أنا أتساءل ما الذي يحدث هنا.لقد لمحة رمز ونرى عشرات الآلاف من المكالمات غير المدارة أساليب مثل fsFormatSubtrackBottomless و SubtrackFormatParaBottomless.

يمكن لأي شخص أن يلقي أي ضوء على هذه المشكلة, أو الخروج مع الحل?

هل كانت مفيدة؟

المحلول 2

في النهاية، لم أتمكن من العثور على حل لهذه.

وأنا باستخدام الحل - أنا ببساطة لا "طباعة جميلة" الرسائل عبر حجم معين

وإذا كان أي شخص لديه حل أفضل، لا تتردد في الرد على ذلك.

نصائح أخرى

التالي مقتطف من ماكدونالد برو WPF في C# 2010 الكتاب ، ص.966:

WPF RichTextBox ، مثل معظم النص الغني الضوابط التي سبقت ذلك ، يمكن أن يكون قليلا بطيئا.إذا كنت في حاجة لعقد كميات هائلة من البيانات ، استخدام المنطق المعقدة للتعامل مع الضغط على مفتاح, أو إضافة تأثيرات مثل التنسيق التلقائي (على سبيل المثال ، Visual Studio هو تسليط الضوء على بناء الجملة أو الكلمة الإملائية-مدقق تشدد), WPF RichTextBox ربما لن نقدم الأداء الذي تحتاجه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top