2011-05-03 5 views
0

단추 클릭시 별도의 창에 진행률 표시 줄을 표시하려고합니다. 완료 될 때까지 사용자가 다른 작업을 수행하지 않기를 바라기 때문에 dispatcher를 사용하고 싶지 않습니다.디스패처없이 WPF 진행률 막대 업데이트

그래서 버튼을 클릭하면 내부적으로 델리게이트를 사용하여 업데이트로 함수를 호출하는 함수를 호출합니다. 당신이 메신저가 얼마나 많은 현재 처리하고 총 된 항목을 통과 볼 수 있듯이

private void ShowtProgress(ProgressReport importProgressReport) 
{ 
      importProgressBar.UpdateProgressBar(importProgressReport.OverallProgress.TotalItems,importProgressReport.OverallProgress.ItemsProcessed); 
      importProgressBar.ShowDialog(); 
} 

: 그를 ClassA 내부

void button click() 
{ 
    classA.function(list); 
} 

void function(list) 
{ 
foreach(list) 
    calling the delegate function(ShowtProgress) to update the progress bar with current and max properties. 
} 

는 나의 대리인 기능은 다음과 같이 보입니다 진행률 표시 줄 updateProgressbar 기능을 사용하여 진행률 표시 줄을 업데이트 할 수 있습니다.

나는 0

에 진척 바의 최소 정의하지만 문제는 (진행률 표시 줄에) ShowDialog를 표시 순간 = 1 분 = 0 가정 최대가 기다리고 거기 유지 것은 이번이 처음이다 사용자 입력 용. 대화 상자를 닫지 않으면 처리가 더 이상 진행되지 않으며이 함수가 호출되면 모달이 팝업되지 않거나 최신 값으로 업데이트되지 않습니다.

내가 무엇이든 놓친 경우 알려주십시오.

+3

ShowDialog() 호출로 인해 사용자 입력을 기다리고 있으며, 일반적인 Show() (importProgressBar가 표시되지 않은 경우)를 사용하거나 이미있는 경우 해당 행을 제거합니다. –

+0

당신은 질문을 이미 올바르게 포맷하는 법을 배워야합니다 ... –

+0

@ H.B. : 나는 다음 번에 그 것을 명심 할 것입니다. Thnx : – alice7

답변

1

ShowDialog() 호출로 인해 사용자 입력 대기 중입니다. 일반 Show() (importProgressBar이 보이지 않는 경우)을 사용하거나 이미있는 경우 줄을 제거하십시오.

+0

로이 (Roy 's)가 질문에 대답 한 것처럼 보였으므로 적절한 대답으로 복사했습니다. – svick