Windows 8.1에서 디바이스 백그라운드 작업 만들기(UWP 디바이스 앱)
Windows 8.1에서 UWP 앱은 주변 장치에서 데이터를 동기화할 수 있습니다. 앱이 디바이스 메타데이터와 연결된 경우 해당 UWP 디바이스 앱은 펌웨어 업데이트와 같은 디바이스 업데이트를 수행할 수도 있습니다. 이 항목에서는 DeviceUseTrigger 또는 DeviceServicingTrigger를 사용하는 디바이스 백그라운드 작업을 만드는 방법을 설명합니다. 이러한 트리거를 사용하는 디바이스 백그라운드 에이전트는 디바이스가 동기화 및 업데이트되는 동안 사용자 동의를 보장하고 배터리 수명을 유지하는 정책의 적용을 받습니다. 디바이스 백그라운드 작업에 대한 자세한 내용은 UWP 디바이스 앱에 대한 디바이스 동기화 및 업데이트를 참조 하세요.
참고 항목
이 항목은 사용자 지정 USB 디바이스 샘플에 해당합니다. 사용자 지정 USB 디바이스 샘플은 DeviceUseTrigger와 디바이스 동기화를 수행하는 백그라운드 작업을 보여 줍니다.
사용자 지정 USB 디바이스 샘플의 디바이스 백그라운드 작업에는 DeviceUseTrigger가 있지만 이 항목에서 설명하는 모든 작업은 DeviceServicingTrigger를 사용하는 디바이스 백그라운드 작업에도 적용할 수 있습니다. 두 트리거 사용의 유일한 차이점은 Windows에서 만든 정책 검사.
앱 매니페스트
디바이스 백그라운드 작업을 사용하려면 앱이 시스템 트리거 백그라운드 작업에 대해 수행되는 것처럼 포그라운드 앱의 앱 매니페스트 파일에서 선언해야 합니다. 자세한 내용은 UWP 디바이스 앱에 대한 디바이스 동기화 및 업데이트를 참조 하세요.
앱 패키지 매니페스트 파일 의 이 예제에서 DeviceLibrary.SyncContent 는 포그라운드 앱의 진입점입니다. DeviceLibrary.SyncContent는 DeviceUseTrigger를 사용하는 백그라운드 작업의 진입점입니다.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
디바이스 백그라운드 작업
디바이스 백그라운드 작업 클래스는 인터페이스를 IBackgroundTask
구현하고 주변 디바이스를 동기화하거나 업데이트하기 위해 만든 실제 코드를 포함합니다. 백그라운드 작업 클래스는 백그라운드 작업이 트리거될 때 및 앱의 애플리케이션 매니페스트에 제공된 진입점에서 실행됩니다.
사용자 지정 USB 디바이스 샘플의 디바이스 백그라운드 클래스에는 DeviceUseTrigger 백그라운드 작업을 사용하여 USB 디바이스에 동기화를 수행하는 코드가 포함되어 있습니다. 자세한 내용은 샘플을 다운로드합니다. Windows의 구현 IBackgroundTask
및 백그라운드 작업 인프라에 대한 자세한 내용은 백그라운드 작업으로 앱 지원을 참조하세요.
사용자 지정 USB 디바이스 샘플에서 디바이스 백그라운드 작업의 주요 부분은 다음과 같습니다.
이 클래스는
IoSyncBackgroundTask
Windows 백그라운드 작업 인프라에 필요한 인터페이스를 구현IBackgroundTask
합니다.클래스는
IoSyncBackgroundTask
클래스의 Run 메서드에서 클래스에IoSyncBackgroundTask
전달된 인스턴스를 가져오DeviceUseDetails
고 이 인스턴스를 사용하여 진행 상황을 Microsoft Store 앱에 다시 보고하고 취소 이벤트에 등록합니다.클래스의 Run 메서드는
IoSyncBackgroundTask
백그라운드 디바이스 동기화 코드를 구현하는 프라이빗OpenDevice
및WriteToDeviceAsync
메서드도 호출합니다.
포그라운드 앱
사용자 지정 USB 디바이스 샘플의 포그라운드 앱은 DeviceUseTrigger를 사용하는 디바이스 백그라운드 작업을 등록하고 트리거합니다. 이 섹션에서는 디바이스 백그라운드 작업에 대한 진행률을 등록, 트리거 및 처리하기 위해 포그라운드 앱이 수행하는 단계에 대한 개요를 제공합니다.
사용자 지정 USB 디바이스 샘플의 포그라운드 앱은 디바이스 백그라운드 작업을 사용하기 위해 다음 단계를 수행합니다.
새 DeviceUseTrigger 및
BackgroundTaskRegistration
개체를 만듭니다.백그라운드 작업이 이전에 이 앱에 의해 등록되었는지 확인하고 작업에서 BackgroundTaskRegistration.Unregister 메서드를 호출하여 취소합니다.
프라이빗
SetupBackgroundTask
메서드는 디바이스와 동기화할 백그라운드 작업을 등록합니다. 메서드는SetupBackgroundTask
다음 단계의SyncWithDeviceAsync
메서드에서 호출됩니다.나중에 사용하기 위해 초기화
DeviceUseTrigger
하고 저장합니다.새
BackgroundTaskBuilder
개체를 만들고 해당TaskEntryPoint
Name
개체와 속성 및SetTrigger
메서드를 사용하여 앱의DeviceUseTrigger
개체 및 백그라운드 작업 이름을 등록합니다.BackgroundTaskBuilder
개체의TaskEntryPoint
속성은 백그라운드 작업이 트리거될 때 실행될 백그라운드 작업 클래스의 전체 이름으로 설정됩니다.포그라운드 앱이 사용자에게 완료 및 진행률 업데이트를 제공할 수 있도록 백그라운드 작업에서 완료 및 진행률 이벤트를 등록합니다.
프라이빗
SyncWithDeviceAsync
메서드는 디바이스와 동기화할 백그라운드 작업을 등록하고 백그라운드 동기화를 시작합니다.SetupBackgroundTask
이전 단계에서 메서드를 호출하고 디바이스와 동기화할 백그라운드 작업을 등록합니다.백그라운드 작업을 시작하는 private
StartSyncBackgroundTaskAsync
메서드를 호출합니다. 이 메서드는 백그라운드 작업이 시작될 때 디바이스를 열 수 있도록 디바이스에 대한 앱의 핸들을 닫습니다.Important
백그라운드 작업은 포그라운드 앱이 호출
RequestAsync
하기 전에 디바이스에 대한 연결을 닫아야 하므로 업데이트를 수행하기 위해 디바이스를 열어야 합니다.
다음으로, 메서드는
StartSyncBackgroundTaskAsync
백그라운드 작업을 트리거하고 백그라운드 작업이 성공적으로 시작되었는지 확인하기 위해 사용되는 개체를 반환DeviceTriggerResults
하는 개체RequestAsync
의RequestAsync
메서드를 호출DeviceUseTrigger
합니다.Important
Windows 검사 필요한 모든 작업 시작 정책 검사 완료되었는지 확인합니다. 모든 정책 검사 완료되면 업데이트 작업이 포그라운드 앱 외부에서 백그라운드 작업으로 실행되므로 작업이 진행되는 동안 앱을 안전하게 일시 중단할 수 있습니다. 또한 Windows는 런타임 요구 사항을 적용하고 해당 요구 사항이 더 이상 충족되지 않는 경우 백그라운드 작업을 취소합니다.
마지막으로 메서드는
SyncWithDeviceAsync
반환StartSyncBackgroundTaskAsync
된 개체를DeviceTriggerResults
사용하여 백그라운드 작업이 성공적으로 시작되었는지 확인합니다. switch 문은 다음에서 결과를 검사하는 데 사용됩니다.DeviceTriggerResults
포그라운드 앱은 디바이스 백그라운드 작업의 진행률로 앱 UI를 업데이트하는 프라이빗
OnSyncWithDeviceProgress
이벤트 처리기를 구현합니다.포그라운드 앱은 백그라운드 작업이 완료될 때 백그라운드 작업에서 포그라운드 앱으로의 전환을 처리하는 프라이빗
OnSyncWithDeviceCompleted
이벤트 처리기를 구현합니다.개체의
CheckResults
메서드를BackgroundTaskCompletedEventArgs
사용하여 백그라운드 작업에서 예외가 throw되었는지 확인합니다.백그라운드 작업이 완료되었으므로 포그라운드 앱이 앱에서 사용할 디바이스를 다시 열고 사용자에게 알리도록 UI를 업데이트합니다.
포그라운드 앱은 UI에서 프라이빗 단추 클릭 이벤트 처리기를 구현하여 백그라운드 작업을 시작하고 취소합니다.
프라이빗
Sync_Click
이벤트 처리기는 이전 단계에서 설명한SyncWithDeviceAsync
메서드를 호출합니다.프라이빗
CancelSync_Click
이벤트 처리기는 프라이빗CancelSyncWithDevice
메서드를 호출하여 백그라운드 작업을 취소합니다.
Private
CancelSyncWithDevice
메서드는 BackgroundTaskRegistration.Unregister 메서드를 사용하여 디바이스를 다시 열 수 있도록 활성 디바이스 동기화를 등록 취소하고 취소합니다.
관련 항목
UWP 디바이스 앱에 대한 디바이스 동기화 및 업데이트