Dela via


Felsöka en bakgrundsaktivitet

viktiga API:er

Lär dig hur du felsöker en bakgrundsaktivitet, inklusive aktivering av bakgrundsaktiviteter och felsökningsspårning i Windows-händelseloggen.

Felsöka bakgrundsuppgifter utanför processen jämfört med i processen

Det här avsnittet behandlar främst bakgrundsaktiviteter som körs i en separat process än värdappen. Om du felsöker en pågående bakgrundsaktivitet har du inte ett separat bakgrundsaktivitetsprojekt och kan ange en brytpunkt på OnBackgroundActivated() (där din pågående bakgrundskod körs) och se steg 2 i Utlösa bakgrundsuppgifter manuellt för att felsöka bakgrundsaktivitetskod nedan för instruktioner om hur du utlöser bakgrundskoden att köras.

Kontrollera att bakgrundsaktivitetsprojektet har konfigurerats korrekt

Det här avsnittet förutsätter att du redan har en befintlig app med en bakgrundsuppgift att felsöka. Följande är specifikt för bakgrundsaktiviteter som tar slut på processen och som inte gäller för pågående bakgrundsaktiviteter.

  • Kontrollera att huvudprojektet refererar till bakgrundsaktivitetsprojektet i C# och C++. Om den här referensen inte är på plats inkluderas inte bakgrundsaktiviteten i apppaketet.
  • I C# och C++ kontrollerar du att utdatakomponent för bakgrundsuppgiften är "Windows Runtime Component".
  • Bakgrundsklassen måste deklareras i startpunktsattributet i paketmanifestet.

Utlös bakgrundsuppgifter/aktiviteter manuellt för att felsöka kod för bakgrundsuppgifter.

Bakgrundsaktiviteter kan utlösas manuellt via Microsoft Visual Studio. Sedan kan du gå igenom koden och felsöka den.

  1. I C# placerar du en brytpunkt i körmetoden för bakgrundsklassen (för pågående bakgrundsaktiviteter placerar du brytpunkten i App.OnBackgroundActivated()) och/eller skriver felsökningsutdata med hjälp av System.Diagnostics.

    I C++ placerar du en brytpunkt i funktionen Kör i bakgrundsklassen (för pågående bakgrundsaktiviteter placerar du brytpunkten i App.OnBackgroundActivated()) och/eller skriver felsökningsutdata med hjälp av OutputDebugString.

  2. Kör ditt program i felsökningsprogrammet och utlös bakgrundsuppgiften med hjälp av Livscykelhändelser verktygsfältet. Den här listrutan visar namnen på bakgrundsaktiviteterna som kan aktiveras av Visual Studio.

    Anmärkning

    Verktygsfältsalternativen Livscykelhändelser visas inte som standard i Visual Studio. Om du vill visa de här alternativen högerklickar du på det aktuella verktygsfältet i Visual Studio och kontrollerar att alternativet Felsökningsplats är aktiverat.

    För att det ska fungera måste bakgrundsaktiviteten redan vara registrerad och den måste fortfarande vänta på utlösaren. Om en bakgrundsaktivitet till exempel har registrerats med en engångs TimeTrigger och utlösaren redan har triggats har det ingen effekt att starta aktiviteten via Visual Studio.

    Anmärkning

    Bakgrundsuppgifter som använder följande utlösare kan inte aktiveras på det här sättet: Programutlösare, MediaProcessing-utlösare, ControlChannelTrigger, PushNotificationTrigger och bakgrundsaktiviteter med hjälp av en SystemTrigger med utlösartypenSmsReceived .
    Applikationsutlösare och MediaProcessingTrigger kan aktiveras manuellt i koden med trigger.RequestAsync().

    felsöka bakgrundsaktiviteter

  3. När bakgrundsaktiviteten aktiveras ansluter felsökningsprogrammet till den och visar felsökningsutdata i VS.

Felsöka aktivering av bakgrundsaktiviteter

Anmärkning

Det här avsnittet är specifikt för bakgrundsaktiviteter som tar slut på processen och gäller inte för pågående bakgrundsaktiviteter.

Aktivering av bakgrundsaktiviteter beror på tre saker:

  • Namn och namnområde för bakgrundsaktivitetsklassen
  • Startpunktsattributet som anges i paketmanifestet
  • Startpunkten som anges av din app när du registrerar bakgrundsaktiviteten
  1. Använd Visual Studio för att notera startpunkten för bakgrundsaktiviteten:

    • Anteckna namnet och namnområdet för bakgrundsaktivitetsklassen som anges i bakgrundsaktivitetsprojektet i C# och C++.
  2. Använd manifestdesignern för att kontrollera att bakgrundsaktiviteten har deklarerats korrekt i paketmanifestet:

    • I C# och C++, måste startpunktsattributet matcha bakgrundsaktivitetens namnområde följt av klassnamnet. Exempel: RuntimeComponent1.MyBackgroundTask.
    • Alla utlösartyper som används med aktiviteten måste också anges.
    • Den körbara filen får inte anges om du inte använder ControlChannelTrigger eller PushNotificationTrigger.
  3. Endast Windows. Om du vill se startpunkten som används av Windows för att aktivera bakgrundsaktiviteten aktiverar du felsökningsspårning och använder Windows-händelseloggen.

    Om du följer den här proceduren och händelseloggen visar fel startpunkt eller utlösare för bakgrundsaktiviteten registrerar appen inte bakgrundsaktiviteten korrekt. Hjälp med den här uppgiften finns i Registrera en bakgrundsuppgift.

    1. Öppna Händelsevisaren genom att gå till startskärmen och söka efter eventvwr.exe.
    2. Gå till program- och tjänstloggar –>Microsoft –>Windows –>BackgroundTaskInfrastructure i loggboken.
    3. I åtgärdsfönstret väljer du Visa ->Visa analys- och felsökningsloggar för att aktivera diagnostikloggningen.
    4. Välj diagnostikloggen och klicka på Aktivera logg.
    5. Försök nu att använda appen för att registrera och aktivera bakgrundsaktiviteten igen.
    6. Visa diagnostikloggarna för detaljerad felinformation. Detta inkluderar startpunkten som registrerats för bakgrundsaktiviteten.

händelsevisaren för felsökningsinformation för bakgrundsuppgifter

Bakgrundsuppgifter och Distribution av Visual Studio-paket

Om en app som använder bakgrundstjänster distribueras med Visual Studio och den version (huvud- och/eller delversion) som anges i Manifestdesignern uppdateras, kan omdistributionen av appen med Visual Studio leda till att appens bakgrundstjänster fördröjs. Detta kan åtgärdas på följande sätt:

  • Använd Windows PowerShell för att distribuera den uppdaterade appen (i stället för Visual Studio) genom att köra skriptet som genereras tillsammans med paketet.
  • Om du redan har distribuerat appen med Visual Studio och dess bakgrundsuppgifter nu har stoppats, starta om eller logga ut/logga in för att få appens bakgrundsuppgifter att fungera igen.
  • Du kan välja felsökningsalternativet "Installera alltid om mitt paket" för att undvika detta i C#-projekt.
  • Vänta tills appen är redo för den slutliga distributionen för att öka paketversionen (ändra den inte vid felsökning).

Anmärkningar

  • Kontrollera att appen söker efter befintliga registreringar av bakgrundsaktiviteter innan du registrerar bakgrundsaktiviteten igen. Flera registreringar av samma bakgrundsaktivitet kan orsaka oväntade resultat genom att köra bakgrundsaktiviteten mer än en gång varje gång den utlöses.
  • Om bakgrundsaktiviteten kräver åtkomst till låsskärmen måste du placera appen på låsskärmen innan du försöker felsöka bakgrundsaktiviteten. Information om hur du anger manifestalternativ för låsskärmskompatibla appar finns i Deklarera bakgrundsaktiviteter i programmanifestet.
  • Parametrar för registrering av bakgrundsaktiviteter verifieras vid tidpunkten för registreringen. Ett fel returneras om någon av registreringsparametrarna är ogiltiga. Se till att appen hanterar scenarier där registreringen av bakgrundsaktiviteter misslyckas – om appen i stället är beroende av att ha ett giltigt registreringsobjekt efter att ha försökt registrera en uppgift kan den krascha.

Mer information om hur du använder VS för att felsöka en bakgrundsaktivitet finns i Hur du utlöser inställning av läge, återuppta och bakgrundshändelser i UWP-appar.