WPF (예 : 레이블 텍스트)의 컨트롤을 올바르게 변경하면 Dispatcher에 업데이트가 대기열에 포함됩니다. Dispatcher는 내 코드가 완료 될 때까지 대기하고 전체 큐를 처리하는 시간을 갖습니다. ReportProgress이 이벤트 핸들러WPF - 동기 UI 업데이트
private void handlerProgressMade (object sender, ProgressEventArgs e)
{
pbProgress.Value = pbProgress.Maximum * e.Percent;
lbProgressMessage.Content = e.Message;
}
에 이벤트를 호출 전체의 ProgressBar 및 표시 "완료"메시지와 함께 끝,하지만 intersteps가 표시되지 않습니다
double current = 0;
ReportProgress (0d, "ProcessingStarted");
foreach (var item in collection)
{
item.Process(); //takes about 10s
current++;
ReportProgress (current/(double)collection.Count, "Processing item No. " + current.ToString() + " finished");
}
ReportProgress (1d, "Finished");
를 호출이 들어
.다른 스레드에서 함수를 호출하고 UI를 비동기 적으로 업데이트하여 수행 할 수 있다는 것을 알고 있습니다. (그리고 어떤 시점에서 발생합니다.)하지만 이제는 스레드를 추가하는 것이 불필요한 복잡성처럼 보입니다.
Dispatcher가 즉시 갱신 및 다시 그릴 수있게하는 방}은 + y입니까? 당신이 배경 스레드를 사용하려는 해달라고하면
나는 당신이 다른 옵션을 가지고있는 것처럼 느껴진다. 스레딩을 위해 가야한다. 아무도 해결하지 못한다면 스레딩을 할 것이다. 다음 링크는 스레딩 http : //bathinenivenkatesh.blogspot을 구현하는 데 도움이 될 수있다. .com/2011/07/wpf-build-more-responsive-ui.html – Bathineni
@bathineni 스레드로 처리 할 수 있다는 것을 알고 있습니다. UI가 응답하는 경우 중요하지 않습니다. 단지 진행 상태가 양호 할 것입니다. – Lukas
@ 루카스 .. 내가 틀릴 수도 있습니다.하지만 나에게 진도를보고하는 것은 UI 응답 일뿐입니다. – Bathineni