2014-04-08 2 views
0

내 클릭 이벤트에서 일정 기간 동안 불확정 진행률 표시 줄을 표시 한 다음 응용 프로그램을 다시 시작하려고합니다. 내가 가지고있는 문제는 내가 진행 상황 표시 줄을 표시 할 수 없다는 것입니다. 누군가가 이것을 도울 수 있습니까?UI를 고정하지 않고 응용 프로그램을 일시 중지하는 방법

private void RunTestButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (testRunning == false) 
      { 
       testRunning = true; 

       //Set progress bar visibility 
       PerformanceProgressbar.Visibility = Visibility.Visible; 
       PerformanceProgressbar.IsIndeterminate = true; 

       //Tell the app to pause for 5 seconds so the user sees the progress bar 


       //Set progress bar visibility 
       PerformanceProgressbar.IsIndeterminate = false; 
       PerformanceProgressbar.Visibility = Visibility.Collapsed; 

       testRunning = false; 
      } 
    } 

답변

1

당신은 Task.Delay를 호출 할 수 있습니다 .. 그리고 await는 결과 : 당신은 확인해야합니다

await Task.Delay(5000); 

확실히 당신은 너무 async로 이벤트를 표시 :

private async void RunTestButton_Click(object sender, RoutedEventArgs e) 
+0

감사합니다. 몇 가지 조사를 한 후에 실제로 내 앱의 다른 부분에서 비동기 메소드를 사용하고 있습니다. 이는 확실히 유망한 것으로 보입니다. 나중에 그것을 테스트해야하지만, 내 주요 질문은,이 메서드의 나머지 프로세스를 실행하고 5 초 동안 메서드의 완료를 일시 중지하면서 화면을 업데이 트할 수 있습니다 것입니다? 임씨는 여전히 약간 흐릿 해. – Matthew

+1

맞을 것입니다. 비동기/대기 상태의 내부는 매우 흥미 롭습니다. 짧은 버전은 예입니다. 현재 메서드를 차단하지만 UI 스레드의 코드를 포함하여 다른 코드를 계속 실행합니다. –

0

PerformanceProgressbar 제어하고, 그래서 당신은 당신의 페이지에 그것을 두어야합니다 (또한 페이드를 사용하십시오).

UI 스레드에서 일부 작업을 수행해야한다면 (정말로 필요합니까?) 페이지를 반투명 한 테두리로 표시하고 상태 표시 줄에 ProgressIndicator을 표시하여 페이지를 페이드하는 것이 좋습니다. 그것은 시스템 객체이며 앱이 동결 되더라도 실행됩니다.

+0

나는 당신의 아이디어를 좋아합니다. 상태 표시 줄에 시스템 트레이라고 가정합니다. 그것에 관한 유일한 것은 그것이 전체 시스템 트레이를 실행할 때 시간과 모든 것이 정확하다는 것입니다. – Matthew

+0

@Matthew 예 시간대 시스템 트레이. 거기에 메시지를 표시하고 progressindicator를 표시 할 수 있으므로 앱이 완전히 동결 된 경우에도 실행됩니다. – ad1Dima

+0

이것을 시험해보고 싶지만 진행률 표시 줄이없고 진행률 표시 줄이 활성화 된 상태에서 텍스트를 표시해야합니다. 여기에 대한 참조를 여기에서 보았습니다. http://stackoverflow.com/questions/18560301/how-to-sync-the-titlebar-with-systemtray-on-windows-phone-8 더 나은 솔루션을 제공 할 수 있습니까? 텍스트가 보이기 위해서는'IsVisible = true'를 설정하고 위쪽에는 스크롤하는 점이 나타나지 않는지 테스트 해보지 않았습니다. – Matthew

관련 문제