XML로 서식이 지정된 FlowDocument
을 생성 중입니다. XML은 잘 형성되었으며 주로 6 개의 문자열 값을 가진 단일 노드로 각각 10,000 개의 노드로 구성됩니다.WPF : RichTextBox.Document에 대단히 느리게 지정 (7 분!)
XML을 XElement
으로 구문 분석하고 FlowDocument
을 메모리에 구성하는 데 약 5 초가 걸립니다. 내 응용 프로그램에서 RichTextBox
의 Document
속성에 FlowDocument
을 할당하면 약 7 분이 걸리고 그 시간 동안 CPU가 최대가됩니다. 내가 여기에 무슨 일이 일어나고 있는지 궁금하네요
// 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
과 같은 관리되지 않는 메소드에 대한 수천 건의 호출을 참조하십시오.
누구든지 문제를 해결하거나 해결 방법을 제안 할 수 있습니까?
좋아요, 그렇다면 좋은 대안이 무엇입니까? – leetNightshade
@leetNightshade : 글쎄, 이것은 유료 광고로 당신이 그것을 구글로 올 때 일어나는 것이다 : http://www.textcontrol.com/en_US/sites/dotnet-rich-text-editor-control/?gclid=CP668O7M2rgCFUVb3godDRkAAg I 또한 코드 플렉스와 코드 프로젝트에서 사용할 수있는 오픈 소스 소스가 있다는 것을 알고 있으며, 이름을 기억할 수 없습니다. – Sabuncu
흠, 좋은 찾기! 나는 당신이 공유 한 것 (나는 아직 시도하지 않았다)과 다른 용도로 대안을 찾을 수 있었다. https://github.com/PavelTorgashov/FastColoredTextBox – leetNightshade