아래 예제와 마찬가지로 장기 실행 작업은 실제로 응용 프로그램의 «비즈니스 논리»로 알려진 백그라운드 클래스에서 수행되고 있으며 UI 뒤에 있는 코드가 아닙니다. 이는 말 그대로 장기 실행 작업이 완료되면 UI를 변경하기 위해 UI 메서드에 액세스하기가 쉽지 않음을 의미합니다. 위의 예에서는 키 바인딩을 보여 줄 수 있는 도구 모음도 아래쪽에 표시합니다. 위의 예제에서는 ProgressBar를 사용하는 것이 얼마나 간단한지 보여 주지만 일반적으로 정적 값이 아닌 일부 실제 작업의 진행률을 보여 드리고자 합니다. 이는 사용자가 진행 상황을 확인하는 데 큰 도움이 되지 않았습니다! 대신 작업자 스레드에서 작업을 수행한 다음 UI 스레드에 업데이트를 푸시한 다음 즉시 처리하고 이러한 업데이트를 시각적으로 표시할 수 있어야 합니다. 이 작업을 처리하기위한 훌륭한 도구는 이 자습서의 다른 곳에서 훨씬 더 많이 이야기하는 BackgroundWorker 클래스입니다. 다음은 위와 같은 예이지만 이번에는 BackgroundWorker를 사용하여 WPF ProgressBar가 IsIndeterminate 속성을 사용하여이 모드를 지원하며 다음 예제에서 보여 드리겠습니다. 높은 수준의 언어. 그러나 대부분의 경우 프로그래밍을 접하는 것이 익숙하지 않다면 이해하기가 어렵습니다. 그래서 간단한 예제와 함께 대리자의 사용에 대한 몇 가지 를 작성하고 «대리자를 사용하는 방법»대신 «대리자가 필요한 이유»의 대답에 더 집중할 것입니다. 또한 이 패키지는 Rcpp와 함께 또는 Rcpp 없이 사용할 수 있는 C++ API를 제공합니다. 진행률 내에 포함된 예제 패키지를 참조하십시오.
다음은 작동 방식을 보여주는 짧은 발췌문입니다: WPF는 ProgressBar라고 하는 진행률을 표시하기 위한 편리한 컨트롤과 함께 제공됩니다. 최소 값과 최대값을 설정한 다음 값을 증분하여 작동하며, 이 값은 현재 프로세스의 진행 거리에 대한 시각적 표시를 제공합니다. 다음은 이를 설명하는 매우 기본적인 예입니다. 매우 기본적인 예로, 창이 준비되는 즉시 0에서 100까지의 루프를 하고 각 반복에서 ProgressBar의 값을 증가시다. 모든 최신 컴퓨터는 눈을 깜박일 수있는 것보다 더 빨리이 작업을 수행 할 수 있으므로 100 밀리 초의 각 반복에 지연을 추가했습니다. 불행히도, 내가 이미 설명했듯이, 아무 일도 일어나지 않을 것입니다. 이것이 프로세스의 중간에 보이는 방법입니다: 실제 예제를 통해 이에 대해 설명해 보겠습니다. 도시에서 마을과 도로의 이름을 모르지만 Google 또는 Bing 지도에서 도시의 위치를 알고 있다고 가정해 보세요. 그런 다음 이름과 기타 물건을 모르고 해당 위치에 쉽게 액세스 할 수 있습니다. 표준 WPF ProgressBar에서 놓친 한 가지는 진행률 표시줄뿐만 아니라 진행률 표시줄의 텍스트 표현을 표시하는 기능입니다. 다행히도 WPF의 유연성덕분에 이를 쉽게 달성할 수 있습니다.
다음은 진행률 표시줄을 사용하여 사용자에게 프로세스에 얼마나 멀리 있는지 를 표시하는 데 사용할 수 있습니다. ProgressBar의 시각화는 다른 포터 시퀀스를 사용하여 사용자 지정할 수 있습니다. 기본 서식은 다음과 같습니다: XAML 진행률 표시줄은 작업이 진행 중임을 나타내는 컨트롤을 나타냅니다. 이런 것 같습니다. 모든 이터블이 총 길이를 보고할 수 있는 것은 아닙니다. 이것은 일반적인 발전기에서 발생합니다. 이 경우 진행 상황을 표시하기 위해 다음과 같이 합계를 전달할 수 있습니다. . 진행률 표시줄이 표시되는 동안 인쇄 텍스트를 가능하게 하기 위해 patch_stdout()를 사용합니다. 이렇게 하면 인쇄가 진행률 표시줄 위에서 수행됩니다.