몇 가지 심각한 스왑/대체 작업을 위해 큰 Txt 문서를 WPF 앱으로 읽고 있습니다. 파일은 실제로는 3D STP 모델이므로 상당히 크지 만이 프로젝트의 원시 텍스트로 작업하고 있습니다. 파일을 여러 번 열지 않고 비교하기 쉽도록 List에 파일을 읽습니다..TXT를 ListBox에 실시간으로 읽으십시오.
어쨌든, 줄을 추가 할 때마다 동적으로 스크롤 할 목록 상자를 얻으려고합니다. 사용자가 콘솔 윈도우를 추가하면 파일 크기에 따라 약간의 시간이 걸릴 수 있으므로 사용자가 볼 수 있습니다. 총 행 수를 읽으면서 진행 표시 줄을 추가했습니다.
작업 진행에 따라 진행률 표시 줄이나 ListBox가 업데이트되지 않습니다. 최종 출력은 완료된 목록 상자의 토지가되며, 진행률 막대는 동시에 최대 0부터 시작합니다.
이
은 매우 간단하다, 내가 뭐하는 거지의 요지입니다 :foreach (string Line in OriginalSTPFile.Lines)
{
string NewLine = EvaluateString(Line); //string the modified to whatever here
pBar.Value++; //increment progressbar
OutputWindow.Items.Add(NewLine); //add line to the ListBox
}
난 그냥 목록 상자 진행 변화에 따라 실시간으로 업데이트 할 수 진행률 표시 줄을합니다. 나는 다음을 사용했다 :
Dispatcher.BeginInvoke(new Action(() => OutputWindow.Items.Add(NewLine));
같은 결과가 나왔다. 좀 더 정교한 멀티 스레딩 방법이 필요합니까? 크로스 스레드 예외를 생성하지 않았으므로 첫 번째 메서드가 작동했을 것이라고 가정했습니다.
는 "실시간"으로 무엇을 의미합니까 전체 계획의 사이비 - 코드는? 상당히 큰 것은 무엇입니까? 또한 진행률 막대를 업데이트하는 단계 기능을 게시하십시오. –
에서와 같이, 라인이 "평가"될 때마다 결과는 즉시 ListBox에 인쇄되고 프로 그스 바는 그에 따라 움직입니다. 다음 행이 평가되기 전에 발생해야합니다. 지금 당분간 프로그램이 멈추고 모든 정보가 동시에 나타납니다. –
내 대답 좀 봐주세요. 확실히 도움이 될 것입니다. –