문제

형식을 구성하고 있습니다 FlowDocument XML에서. XML은 잘 형성되며 주로 6 자 문자열 값을 갖는 단일 노드를 갖는 각각 10,000 개의 노드로 구성됩니다.

XML을 an에 구문 분석합니다 XElement 그리고 구성 FlowDocument 메모리에서 약 5 초가 걸립니다. 할당 FlowDocument ~로 Document a의 속성 RichTextBox 내 응용 프로그램에서는 약 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.

누구든지 문제에 대해 빛을 비추거나 해결 방법을 제시 할 수 있습니까?

도움이 되었습니까?

해결책 2

결국, 나는 이것에 대한 해결책을 찾을 수 없었습니다.

나는 해결 방법을 사용하고 있습니다 - 나는 단순히 특정 크기에 걸쳐 "예쁜 인쇄"메시지를 "예쁜 인쇄"하지 않습니다.

누군가가 더 나은 솔루션을 가지고 있다면 자유롭게 게시하십시오.

다른 팁

맥도날드에서 발췌 한 다음 C# 2010의 프로 WPF 책, p. 966 :

WPF RichTextBox는 이전의 풍부한 텍스트 컨트롤과 마찬가지로 약간 느리게 될 수 있습니다. 엄청난 양의 데이터를 보유 해야하는 경우 복잡한 논리를 사용하여 주요 프레스를 처리하거나 자동 형식 (예 : Visual Studio의 구문 강조 표시 또는 Word의 철자 체커 밑줄)과 같은 효과를 추가하십시오. WPF RichTextBox는 아마도 필요한 성능을 제공하지 않을 것입니다..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top