다음을 통해 공유


백그라운드 작업 진행 및 완료를 모니터링하는 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

앱에서 백그라운드 작업이 보고하는 진행 및 완료를 인식하는 방법에 대해 알아봅니다. 백그라운드 작업은 앱과 분리되고 개별적으로 실행되지만, 앱 코드를 사용하여 백그라운드 작업의 진행과 완료를 모니터링할 수 있습니다. 이렇게 하려면 시스템에 등록된 백그라운드 작업의 이벤트에 앱을 가입합니다.

알아야 할 사항

기술

사전 요구 사항

지침

단계 1:

  1. 백그라운드 작업의 완료를 위해 이벤트 처리기에 연결할 함수를 만듭니다. 이 함수는 BackgroundTaskCompletedEventArgs 개체를 가져오고 다른 매개 변수를 가져오지 말아야 합니다.

    함수를 로컬로 등록하는 경우 다음 공간을 사용할 수 있습니다.

    function OnCompleted(args)
    {
        // TODO: Add code that deals with background task completion.
    }
    

    그런 다음 BackgroundTaskRegistration 개체(Register 함수의 성공적 호출로 획득)로 하는 것처럼 이것을 등록할 수 있습니다.

    backgroundTaskRegistration.addEventListener("completed", onCompleted);
    
  2. 백그라운드 작업 완료를 처리하는 코드를 추가해야 할 것입니다.

    예를 들어 백그라운드 작업 샘플(영문)에서는 LocalSettings에 저장된 완료 상태로 UI를 업데이트합니다.

    function OnCompleted(args)
    {
        // 
        // 
        // 
        backgroundTaskName = this.name;
    
        // 
        // Call a method to update the UI (beyond the scope of this example).
        // 
        UpdateUI();
    }
    
  3. 강력한 앱은 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:

  1. 완료된 백그라운드 작업을 처리하는 이벤트 처리기 함수를 만듭니다. 이 코드는 IBackgroundTaskRegistrationBackgroundTaskProgressEventArgs 개체에서 사용되는 특정 공간을 따라야 합니다.

    OnProgress 백그라운드 작업 이벤트 처리기 메서드에 대해 다음 공간을 사용합니다.

    function OnProgress(task, args)
    {
        // TODO: Add code that deals with background task progress.
    }
    
  2. 백그라운드 작업 완료를 처리하는 이벤트 처리기에 코드를 추가합니다.

    예를 들어 백그라운드 작업 샘플(영문)에서는 args 매개 변수를 통해 전달된 진행 상태로 UI를 업데이트합니다.

    function OnProgress(task, args)
    {
        var progress = "Progress: " + args.Progress + "%";
        BackgroundTaskSample.SampleBackgroundTaskProgress = progress;
        UpdateUI();
    }
    

단계 3:

새 백그라운드 작업 및 기존 백그라운드 작업과 함께 이벤트 처리기 함수를 등록합니다.

  1. 앱에서는 백그라운드 작업을 처음으로 등록할 때 앱이 포그라운드에서 활성화된 상태에서 작업이 실행될 경우 작업에 대한 진행 및 완료 업데이트를 수신하도록 등록해야 합니다.

    예를 들어 백그라운드 작업 샘플(영문)에서는 등록된 각 백그라운드 작업에 대해 다음 함수를 호출합니다.

    
    function AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task)
    {
        task.Progress += new BackgroundTaskProgressEventHandler(OnProgress);
        task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
    }
    
  2. 앱은 시작되거나 백그라운드 작업 상태와 관련된 새 페이지로 이동할 때 현재 등록된 백그라운드 작업의 목록을 가져와서 진행 및 완료 이벤트 처리기 함수에 연결합니다. 응용 프로그램에 의해 현재 등록된 백그라운드 작업 목록은 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();
    }
    

관련 항목

빠른 시작: 백그라운드 작업 만들기 및 등록

백그라운드 작업을 디버그하는 방법

백그라운드 작업을 사용하여 앱 지원

취소된 백그라운드 작업을 처리하는 방법

보류 중인 백그라운드 작업 목록을 가져오는 방법

응용 프로그램 매니페스트에서 백그라운드 작업을 선언하는 방법

백그라운드 작업에 대한 지침 및 검사 목록