Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Metadata zařízení jsou zastaralá a budou odebrána v budoucí verzi Windows. Informace o nahrazení této funkce naleznete v tématu Metadata kontejneru balíčku ovladačů.
Aplikace UPW může synchronizovat data na periferním zařízení. Pokud je vaše aplikace přidružená k metadatem zařízení, může tato aplikace zařízení pro UPW také provádět aktualizace zařízení, jako jsou aktualizace firmwaru. Tento článek popisuje, jak vytvořit úlohu na pozadí zařízení, která používá DeviceUseTrigger nebo DeviceServicingTrigger. Agenti na pozadí zařízení, kteří tyto triggery používají, podléhají zásadám, které zajišťují souhlas uživatele a pomáhají zachovat životnost baterie při synchronizaci a aktualizaci zařízení. Další informace o úlohách na pozadí zařízení najdete v tématu Synchronizace a aktualizace zařízení pro UWP aplikace zařízení.
Tento článek se shoduje s ukázkovým zařízením USB na míru. Ukázkový příklad vlastního USB zařízení předvádí úlohu běžící na pozadí, která provádí synchronizaci zařízení pomocí DeviceUseTrigger.
I když úloha na pozadí zařízení v ukázce vlastního zařízení USB obsahuje DeviceUseTrigger, všechno, co je popsáno v tomto článku, lze použít také na úlohy na pozadí zařízení, které používají DeviceServicingTrigger. Jediným rozdílem mezi použitím těchto dvou triggerů jsou kontroly zásad provedené systémem Windows.
Manifest aplikace
Pokud chcete použít úlohu na pozadí zařízení, aplikace ji musí deklarovat v souboru manifestu aplikace v popředí, jako je tomu u úloh na pozadí aktivovaných systémem. Další informace najdete v tématu Synchronizace a aktualizace zařízení pro aplikace zařízení pro UPW.
V tomto příkladu ze souboru manifestu balíčku aplikace je DeviceLibrary.SyncContent vstupním bodem z popředí aplikace. DeviceLibrary.SyncContent je vstupním bodem pro úlohu na pozadí, která používá DeviceUseTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
Úloha na pozadí zařízení
Třída úloh na pozadí zařízení implementuje IBackgroundTask rozhraní a obsahuje skutečný kód, který vytvoříte pro synchronizaci nebo aktualizaci periferního zařízení. Třída úlohy na pozadí se spustí při aktivaci úlohy na pozadí a ze vstupního bodu určeného v manifestu vaší aplikace.
Třída pozadí zařízení v ukázce vlastního zařízení USB obsahuje kód pro provedení synchronizace se zařízením USB pomocí úlohy DeviceUseTrigger na pozadí. Úplné podrobnosti získáte stažením ukázky. Další informace o implementaci IBackgroundTask a infrastruktuře úloh na pozadí systému Windows najdete v tématu Podpora aplikace pomocí úloh na pozadí.
Mezi klíčové části úlohy na pozadí zařízení ve vlastní ukázce zařízení USB patří:
Třída
IoSyncBackgroundTaskimplementujeIBackgroundTaskrozhraní vyžadované infrastrukturou úloh na pozadí systému Windows.Třída
IoSyncBackgroundTaskzíská instanciDeviceUseDetails, která je předána této třídě v metodě Run třídyIoSyncBackgroundTask, a tuto instanci používá k hlášení průběhu zpět do aplikace Microsoft Store a k registraci zrušených událostí.IoSyncBackgroundTaskmetoda třídy Run také volá privátní metodyOpenDeviceaWriteToDeviceAsync, které implementují kód synchronizace zařízení na pozadí.
Aplikace na popředí
Aplikace na popředí v ukázce vlastního zařízení USB zaregistruje a aktivuje úlohu na pozadí zařízení, která používá DeviceUseTrigger. Tato část obsahuje přehled kroků, které vaše aplikace v popředí provede při registraci, aktivaci a zpracování průběhu úlohy na pozadí zařízení.
Aplikace v popředí ve vzorku vlastního zařízení USB provede následující kroky pro využití úlohy na pozadí zařízení:
Vytvoří nové DeviceUseTrigger a
BackgroundTaskRegistrationobjekty.Zkontroluje, jestli byly touto aplikací dříve zaregistrovány nějaké úlohy na pozadí a zruší je voláním metody BackgroundTaskRegistration.Unregister pro úlohu.
Privátní
SetupBackgroundTaskmetoda zaregistruje úlohu na pozadí, která se bude synchronizovat se zařízením. MetodaSetupBackgroundTaskse volá zSyncWithDeviceAsyncmetody v dalším kroku.Inicializuje
DeviceUseTriggera uloží ho pro pozdější použití.Vytvoří nový
BackgroundTaskBuilderobjekt a použije jehoNameTaskEntryPointvlastnosti aSetTriggermetodu k registraci objektuDeviceUseTriggeraplikace a názvu úlohy na pozadí.BackgroundTaskBuilderVlastnost objektuTaskEntryPointje nastavena na úplný název třídy úloh na pozadí, která se spustí při aktivaci úlohy na pozadí.Zaregistruje události dokončení a průběhu ze zpracování na pozadí, aby aplikace na popředí mohla uživateli poskytovat informace o dokončení a průběhu.
Privátní
SyncWithDeviceAsyncmetoda zaregistruje úlohu na pozadí, která se synchronizuje se zařízením a spustí synchronizaci na pozadí.Zavolá metodu
SetupBackgroundTaskz předchozího kroku a zaregistruje úlohu na pozadí, která se bude synchronizovat se zařízením.Volá soukromou
StartSyncBackgroundTaskAsyncmetodu, která spouští úlohu na pozadí. Tato metoda uzavře popisovač zařízení aplikace, aby zajistila, že úloha na pozadí může zařízení otevřít při svém spuštění.Důležité
Úloha na pozadí bude muset otevřít zařízení k provedení aktualizace, aby aplikace popředí musela před voláním
RequestAsynczavřít svá připojení k zařízení .
Dále metoda
StartSyncBackgroundTaskAsyncvolá metodu objektuDeviceUseTriggerRequestAsync, která spustí úlohu na pozadí a vrátí objektDeviceTriggerResultszRequestAsyncpoužitý k určení, zda byla úloha na pozadí úspěšně spuštěna.Důležité
Systém Windows kontroluje, zda byly dokončeny všechny nezbytné kontroly zásad spuštění úlohy. Pokud jsou všechny kontroly zásad dokončeny, operace aktualizace je nyní spuštěna jako úloha na pozadí mimo aplikaci na popředí, což aplikaci umožňuje bezpečně pozastavit během probíhající operace. Systém Windows také vynucuje všechny požadavky na modul runtime a zruší úlohu na pozadí, pokud už tyto požadavky nejsou splněné.
Nakonec metoda
SyncWithDeviceAsyncpoužíváDeviceTriggerResultsobjekt vrácenýStartSyncBackgroundTaskAsynck určení, zda byla úloha na pozadí úspěšně spuštěna. Příkaz switch slouží ke kontrole výsledku zDeviceTriggerResultsAplikace na popředí implementuje obslužnou rutinu privátní
OnSyncWithDeviceProgressudálosti, která aktualizuje uživatelské rozhraní aplikace průběhem úlohy, která běží na pozadí zařízení.Aplikace na popředí implementuje obslužnou rutinu soukromé
OnSyncWithDeviceCompletedudálosti pro zpracování přechodu z úloh na pozadí na aplikaci v popředí, když je úloha na pozadí dokončena.CheckResultsPoužívá metodu objektuBackgroundTaskCompletedEventArgsk určení, zda byly nějaké výjimky vyvolány úlohou na pozadí.Aplikace na popředí znovu otevře zařízení, které bude aplikace používat teď, když je úloha na pozadí dokončená, a aktualizuje uživatelské rozhraní tak, aby uživatele informovala.
Aplikace na popředí implementuje soukromé obslužné rutiny událostí kliknutí na tlačítko z uživatelského rozhraní pro spuštění a zrušení úlohy na pozadí.
Obslužná rutina privátní
Sync_Clickudálosti volá metoduSyncWithDeviceAsyncpopsanou v předchozích krocích.Privátní obslužná rutina
CancelSync_Clickudálosti volá privátníCancelSyncWithDevicemetodu ke zrušení úlohy na pozadí.
Privátní
CancelSyncWithDevicemetoda zruší registraci a zruší všechny aktivní synchronizace zařízení, aby bylo možné zařízení znovu otevřít pomocí metody BackgroundTaskRegistration.Unregister .