백그라운드 작업 진행 및 완료를 모니터링하는 방법(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
앱에서 백그라운드 작업이 보고하는 진행 및 완료를 인식하는 방법에 대해 알아봅니다. 백그라운드 작업은 앱과 분리되고 개별적으로 실행되지만, 앱 코드를 사용하여 백그라운드 작업의 진행과 완료를 모니터링할 수 있습니다. 이렇게 하려면 시스템에 등록된 백그라운드 작업의 이벤트에 앱을 가입합니다.
알아야 할 사항
기술
사전 요구 사항
- 이 항목에서는 백그라운드 작업을 등록하는 앱이 있다고 가정합니다. 백그라운드 작업을 빠르게 작성하려면 빠른 시작: 백그라운드 작업 만들기 및 등록을 참조하세요. 조건 및 트리거에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.
지침
단계 1:
백그라운드 작업의 완료를 위해 이벤트 처리기에 연결할 함수를 만듭니다. 이 함수는 BackgroundTaskCompletedEventArgs 개체를 가져오고 다른 매개 변수를 가져오지 말아야 합니다.
함수를 로컬로 등록하는 경우 다음 공간을 사용할 수 있습니다.
function OnCompleted(args) { // TODO: Add code that deals with background task completion. }
그런 다음 BackgroundTaskRegistration 개체(Register 함수의 성공적 호출로 획득)로 하는 것처럼 이것을 등록할 수 있습니다.
backgroundTaskRegistration.addEventListener("completed", onCompleted);
백그라운드 작업 완료를 처리하는 코드를 추가해야 할 것입니다.
예를 들어 백그라운드 작업 샘플(영문)에서는 LocalSettings에 저장된 완료 상태로 UI를 업데이트합니다.
function OnCompleted(args) { // // // backgroundTaskName = this.name; // // Call a method to update the UI (beyond the scope of this example). // UpdateUI(); }
강력한 앱은 CheckResult를 호출하여 백그라운드 작업에서 발생된 예외를 확인할 수 있습니다.
백그라운드 작업에서 발생된 예외를 처리하도록 백그라운드 작업 샘플(영문) 메서드를 다음과 같이 수정할 수 있습니다.
function OnCompleted(task, args) { var settings = ApplicationData.Current.LocalSettings; var key = task.TaskId.ToString(); try { args.CheckResult(); BackgroundTaskSample.SampleBackgroundTaskStatus = settings.Values[key].ToString(); } catch (Exception ex) { BackgroundTaskSample.SampleBackgroundTaskStatus = "Error: " + ex.Message; } UpdateUI(); }
단계 2:
완료된 백그라운드 작업을 처리하는 이벤트 처리기 함수를 만듭니다. 이 코드는 IBackgroundTaskRegistration 및 BackgroundTaskProgressEventArgs 개체에서 사용되는 특정 공간을 따라야 합니다.
OnProgress 백그라운드 작업 이벤트 처리기 메서드에 대해 다음 공간을 사용합니다.
function OnProgress(task, args) { // TODO: Add code that deals with background task progress. }
백그라운드 작업 완료를 처리하는 이벤트 처리기에 코드를 추가합니다.
예를 들어 백그라운드 작업 샘플(영문)에서는 args 매개 변수를 통해 전달된 진행 상태로 UI를 업데이트합니다.
function OnProgress(task, args) { var progress = "Progress: " + args.Progress + "%"; BackgroundTaskSample.SampleBackgroundTaskProgress = progress; UpdateUI(); }
단계 3:
새 백그라운드 작업 및 기존 백그라운드 작업과 함께 이벤트 처리기 함수를 등록합니다.
앱에서는 백그라운드 작업을 처음으로 등록할 때 앱이 포그라운드에서 활성화된 상태에서 작업이 실행될 경우 작업에 대한 진행 및 완료 업데이트를 수신하도록 등록해야 합니다.
예를 들어 백그라운드 작업 샘플(영문)에서는 등록된 각 백그라운드 작업에 대해 다음 함수를 호출합니다.
function AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task) { task.Progress += new BackgroundTaskProgressEventHandler(OnProgress); task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted); }
앱은 시작되거나 백그라운드 작업 상태와 관련된 새 페이지로 이동할 때 현재 등록된 백그라운드 작업의 목록을 가져와서 진행 및 완료 이벤트 처리기 함수에 연결합니다. 응용 프로그램에 의해 현재 등록된 백그라운드 작업 목록은 BackgroundTaskRegistration.AllTasks 속성에 보관됩니다.
예를 들어 백그라운드 작업 샘플(영문)에서는 SampleBackgroundTask 페이지로 이동할 때 다음 코드를 사용하여 이벤트 처리기를 연결합니다.
function OnNavigatedTo(NavigationEventArgs e) { foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == BackgroundTaskSample.SampleBackgroundTaskName) { AttachProgressAndCompletedHandlers(task.Value); BackgroundTaskSample.UpdateBackgroundTaskStatus(BackgroundTaskSample.SampleBackgroundTaskName, true); } } UpdateUI(); }