이 문서에서는 백그라운드 작업 사용에 대한 개요를 제공하고 WinUI 3 앱에서 새 백그라운드 작업을 만드는 방법을 설명합니다. 백그라운드 작업이 있는 UWP 앱을 WinUI로 마이그레이션하는 방법에 대한 자세한 내용은 Windows 앱 SDK 백그라운드 작업 마이그레이션 전략참조하세요.
Windows 앱 SDK의 BackgroundTaskBuilder
백그라운드 작업은 사용자 인터페이스 없이 백그라운드에서 실행되는 앱 구성 요소입니다. 파일 다운로드, 데이터 동기화, 알림 보내기 또는 타일 업데이트와 같은 작업을 수행할 수 있습니다. 시간, 시스템 변경, 사용자 작업 또는 푸시 알림과 같은 다양한 이벤트에 의해 트리거될 수 있습니다. 이러한 작업은 앱이 실행 중 상태가 아닌 경우에도 해당 트리거가 발생할 때 실행될 수 있습니다.
WinRT(Windows 런타임) BackgroundTaskBuilder UWP 애플리케이션용으로 설계되었으며, 대부분의 백그라운드 작업 트리거는 완전 신뢰 COM 구성 요소에 대해 지원되지 않습니다.
backgroundtaskhost
프로세스로 시작된 WinRT 구성 요소에 등록된 경우에만 지원됩니다. 이로 인해 Windows 앱 SDK 데스크톱 애플리케이션은 백그라운드 작업 트리거를 사용하여 시작할 완전 신뢰 COM 구성 요소를 직접 등록할 수 없습니다. 프로젝트에 WinRT 구성 요소를 포함하는 해결 방법이 필요합니다. Windows 앱 SDK API의 BackgroundTaskBuilder 이 해결 방법을 방지하므로 WinUI 3 및 Windows 앱 SDK를 사용하는 다른 데스크톱 애플리케이션은 백그라운드 작업에 직접 완전 신뢰 COM 구성 요소를 등록할 수 있습니다.
백그라운드 작업 등록
다음 예제에서는 Windows 앱 SDK BackgroundTaskBuilder사용하여 완전 신뢰 COM 구성 요소에 대한 백그라운드 작업을 등록합니다. 자세한 내용은 백그라운드 작업 마이그레이션 전략 가이드를 참조하세요.
백그라운드 작업을 만들고 등록하는 C++ 코드는 다음과 같습니다.
//Using the Windows App SDK API for BackgroundTaskBuilder
winrt::Microsoft::Windows::ApplicationModel::Background::BackgroundTaskBuilder builder;
SystemTrigger trigger = SystemTrigger(SystemTriggerType::TimeZoneChange, false);
auto backgroundTrigger = trigger.as<IBackgroundTrigger>();
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(SystemCondition(SystemConditionType::InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register();
C#에서 백그라운드 작업을 만들고 등록하려면 코드는 다음과 같습니다.
//Using the Windows App SDK API for BackgroundTaskBuilder
var builder = new Microsoft.Windows.ApplicationModel.Background.BackgroundTaskBuilder();
var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);
var backgroundTrigger = trigger as IBackgroundTrigger;
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register();
백그라운드 작업에 대한 해당 패키지 매니페스트 항목은 다음과 같습니다.
<Extension Category="windows.backgroundTasks" EntryPoint="Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.Task">
<BackgroundTasks>
<Task Type="general"/>
</BackgroundTasks>
</Extension>
전체 WinUI 3 백그라운드 작업 등록 샘플은 GitHub찾을 수 있습니다.
관련 콘텐츠
- UWP 앱 백그라운드 작업에 대한 지침
- 백그라운드 작업 마이그레이션 전략
Windows developer