Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Viktigt!
Enhetsmetadata är inaktuella och tas bort i en framtida version av Windows. Information om hur du ersätter den här funktionen finns i Containermetadata för drivrutinspaket.
UWP-appen kan synkronisera data på din kringutrustningsenhet. Om din app är associerad med enhetsmetadata kan UWP-enhetsappen också utföra enhetsuppdateringar, till exempel uppdateringar av inbyggd programvara. Den här artikeln beskriver hur du skapar en enhetsbakgrundsaktivitet som använder DeviceUseTrigger eller DeviceServicingTrigger. Enhetsbakgrundsagenter som använder dessa utlösare omfattas av principer som säkerställer användarens medgivande och hjälper till att bevara batteritiden medan enheterna synkroniseras och uppdateras. Mer information om enhetsbakgrundsuppgifter finns i Enhetssynkronisering och uppdatering för UWP-enhetsappar.
Den här artikeln motsvarar exemplet på anpassad USB-enhet. Exemplet på anpassad USB-enhet visar en bakgrundsaktivitet som utför enhetssynkronisering med DeviceUseTrigger.
Även om enhetens bakgrundsaktivitet i exemplet på anpassad USB-enhet har en DeviceUseTrigger, kan allt som beskrivs i den här artikeln även tillämpas på bakgrundsuppgifter för enheter som använder DeviceServicingTrigger. Den enda skillnaden mellan att använda de två utlösarna är de principkontroller som görs av Windows.
Appmanifestet
Om du vill använda en bakgrundsaktivitet för enhet måste din app deklarera den i manifestfilen för applikationen, precis som för systemstartade bakgrundsaktiviteter. Mer information finns i Enhetssynkronisering och uppdatering för UWP-enhetsappar.
I det här exemplet från en apppaketmanifestfil är DeviceLibrary.SyncContent en startpunkt från förgrundsappen. DeviceLibrary.SyncContent är startpunkten för bakgrundsaktiviteten som använder DeviceUseTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
Enhetens bakgrundsaktivitet
Aktivitetsklassen för enhetsbakgrund implementerar IBackgroundTask-gränssnittet och innehåller den faktiska kod som du skapar för att antingen synkronisera eller uppdatera kringutrustningen. Bakgrundsaktivitetsklassen körs när bakgrundsaktiviteten utlöses och från startpunkten som anges i appens programmanifest.
Enhetens bakgrundsklass i exempel på en anpassad USB-enhet innehåller koden för att utföra en synkronisering till en USB-enhet genom DeviceUseTrigger bakgrundsuppgift. Om du vill ha fullständig information laddar du ned exemplet. Mer information om hur du implementerar IBackgroundTask och bakgrundsaktivitetsinfrastrukturen i Windows finns i Stöd för din app med bakgrundsaktiviteter.
Viktiga delar av enhetens bakgrundsaktivitet i exempel på anpassad USB-enhet inkluderar:
Klassen
IoSyncBackgroundTaskimplementerar detIBackgroundTaskgränssnitt som krävs av Windows bakgrundsaktivitetsinfrastruktur.Klassen
IoSyncBackgroundTaskhämtar denDeviceUseDetails-instans som skickas till klassen i Kör-metoden förIoSyncBackgroundTask-klassen och använder denna instans för att rapportera förloppet tillbaka till Microsoft Store-appen samt för att registrera för avbokningshändelser.I
IoSyncBackgroundTask-klassens Kör-metod anropas även de privataOpenDeviceochWriteToDeviceAsyncmetoder som implementerar synkroniseringskoden för bakgrundsenheter.
Förgrundsappen
Förgrundsappen i det anpassade USB-enhetsexemplet registrerar och utlöser en enhetsbakgrundsaktivitet som använder DeviceUseTrigger. Det här avsnittet innehåller en översikt över de steg som din förgrundsapp vidtar för att registrera, utlösa och hantera förlopp för en enhetsbakgrundsaktivitet.
Förgrundsappen i Anpassat USB-enhetsexempel utför följande steg för att använda en enhetsbakgrundsuppgift:
Skapar nya DeviceUseTrigger-- och
BackgroundTaskRegistration-objekt.Kontrollerar om några bakgrundsaktiviteter tidigare har registrerats av den här appen och avbryter dem genom att anropa metoden BackgroundTaskRegistration.Unregister för aktiviteten.
Den privata
SetupBackgroundTask-metoden registrerar bakgrundsaktiviteten som ska synkroniseras med enheten. MetodenSetupBackgroundTaskanropas från metodenSyncWithDeviceAsynci nästa steg.Initierar
DeviceUseTriggeroch sparar den för senare användning.Skapar ett nytt
BackgroundTaskBuilder-objekt och använder dess egenskaper och metodName,TaskEntryPointochSetTriggerför att registrera appensDeviceUseTriggerobjekt- och bakgrundsaktivitetsnamn. ObjektetBackgroundTaskBuilder:s egenskapTaskEntryPointsätts till det fullständiga namnet på bakgrundsuppgiftsklassen som ska köras när bakgrundsuppgiften utlöses.Registrerar för slutförande- och förloppshändelser från bakgrundsaktiviteten så att förgrundsappen kan tillhandahålla slutförande- och förloppsuppdateringar till användaren.
Den privata
SyncWithDeviceAsync-metoden registrerar bakgrundsaktiviteten som ska synkroniseras med enheten och startar bakgrundssynkroniseringen.Anropar metoden
SetupBackgroundTaskfrån föregående steg och registrerar bakgrundsaktiviteten som ska synkroniseras med enheten.Anropar metoden private
StartSyncBackgroundTaskAsyncsom startar bakgrundsaktiviteten. Den metoden stänger appens handtag till enheten för att säkerställa att bakgrundsaktiviteten kan öppna enheten när den startas.Viktigt!
Bakgrundsaktiviteten måste öppna enheten för att utföra uppdateringen, så förgrundsappen måste stänga sina anslutningar till enheten innan den anropar
RequestAsync.
Sedan anropar metoden
StartSyncBackgroundTaskAsyncDeviceUseTrigger-objektetsRequestAsync-metod, vilket utlöser bakgrundsaktiviteten och returnerarDeviceTriggerResults-objektet som hämtats frånRequestAsync, vilket används för att avgöra om bakgrundsaktiviteten har startat framgångsrikt.Viktigt!
Windows-kontroller för att säkerställa att alla nödvändiga principkontroller för aktivitetsinitiering har slutförts. Om alla principkontroller har slutförts körs uppdateringsåtgärden nu som en bakgrundsaktivitet utanför förgrundsappen, vilket gör att appen kan pausas på ett säkert sätt medan åtgärden pågår. Windows tillämpar även alla körningskrav och avbryter bakgrundsaktiviteten om dessa krav inte längre uppfylls.
Slutligen använder metoden
SyncWithDeviceAsyncdetDeviceTriggerResultsobjekt som returneras frånStartSyncBackgroundTaskAsyncför att avgöra om bakgrundsaktiviteten startade. En switch-instruktion används för att inspektera resultatet frånDeviceTriggerResultsFörgrundsappen implementerar en privat
OnSyncWithDeviceProgresshändelsehanterare som uppdaterar appens användargränssnitt med förlopp från enhetens bakgrundsaktivitet.Förgrundsappen implementerar en privat
OnSyncWithDeviceCompletedhändelsehanterare för att hantera övergången från bakgrundsaktiviteter till förgrundsapp när bakgrundsaktiviteten har slutförts.Använder
CheckResults-metoden förBackgroundTaskCompletedEventArgs-objektet för att avgöra om några undantag utlöstes av bakgrundsaktiviteten.Förgrundsappen öppnar enheten igen för användning av appen nu när bakgrundsaktiviteten är klar och uppdaterar användargränssnittet för att meddela användaren.
Förgrundsappen implementerar privata händelsehanterare för knapptryck från användargränssnittet för att starta och avbryta bakgrundsuppgiften.
Den privata
Sync_Click-händelsehanteraren anropar metodenSyncWithDeviceAsyncsom beskrivs i föregående steg.Den privata
CancelSync_Click-händelsehanteraren anropar den privataCancelSyncWithDevice-metoden för att avbryta bakgrundsaktiviteten.
Den privata
CancelSyncWithDevice-metoden avregistrerar och avbryter alla aktiva enhetssynkroniseringar så att enheten kan öppnas igen med hjälp av metoden BackgroundTaskRegistration.Unregister.