Eseguire il debug di un'attività in background
API importanti
Informazioni su come eseguire il debug di un’attività in background, inclusa la traccia dell’attivazione e del debug nel registro eventi di Windows.
Debug di attività in background out-of-process e in-process
Questo argomento riguarda principalmente le attività in background eseguite in un processo separato rispetto all'app host. Se si esegue il debug di un'attività in background in-process, non si avrà un progetto attività in background separato e sarà possibile impostare un punto di interruzione in OnBackgroundActivated() (in cui viene eseguito il codice in background in-process) e vedere il passaggio 2 in Attivare manualmente le attività in background per eseguire il debug del codice attività in background, di seguito, per istruzioni su come attivare l'esecuzione del codice in background.
Assicurarsi che il progetto di attività in background sia configurato correttamente
Questo argomento presuppone che si abbia già un'app esistente con un'attività in background per il debug. Quanto di seguito è specifico per le attività in background che eseguono out-of-process e non si applicano alle attività in background in-process.
- In C# e C++, assicurarsi che il progetto principale faccia riferimento al progetto di attività in background. Se questo riferimento non è disponibile, l'attività in background non verrà inclusa nel pacchetto dell'app.
- In C# e C++, assicurarsi che il tipo di output del progetto di attività in background sia "Windows Runtime Component".
- La classe in background deve essere dichiarata nell'attributo del punto di ingresso nel manifesto del pacchetto.
Attivare manualmente le attività in background per eseguire il debug del codice dell'attività in background
Le attività in background possono essere attivate manualmente tramite Microsoft Visual Studio. È quindi possibile eseguire il codice un'istruzione alla volta ed eseguirne il debug.
In C# inserire un punto di interruzione nel metodo Run della classe in background (per le attività in background in-process inserire il punto di interruzione in App.OnBackgroundActivated()) e/o scrivere l'output di debug usando System.Diagnostics.
In C++ inserire un punto di interruzione nella funzione Run della classe in background (per le attività in background in-process inserire il punto di interruzione in App.OnBackgroundActivated()) e/o scrivere l'output di debug usando OutputDebugString.
Eseguire l'applicazione nel debugger e quindi attivare l'attività in background usando la barra degli strumenti Eventi del ciclo di vita. Questo elenco a discesa mostra i nomi delle attività in background che possono essere attivate da Visual Studio.
Nota
Le opzioni della barra degli strumenti Eventi del ciclo di vita non vengono visualizzate per impostazione predefinita in Visual Studio. Per visualizzare queste opzioni, fare clic con il pulsante destro del mouse sulla barra degli strumenti corrente in Visual Studio e verificare che l'opzione Debug Location sia abilitata.
Per il funzionamento, l'attività in background deve essere già registrata e deve essere ancora in attesa del trigger. Ad esempio, se un'attività in background è stata registrata con un TimeTrigger con un solo colpo e tale trigger è già stato attivato, l'avvio dell'attività tramite Visual Studio non avrà alcun effetto.
Nota
Le attività in background che usano i trigger seguenti non possono essere attivate in questo modo: Application trigger, MediaProcessing trigger, ControlChannelTrigger, PushNotificationTrigger e attività in background usando un SystemTrigger con il tipo di trigger SmsReceived.
Application trigger e MediaProcessingTrigger possono essere segnalate manualmente nel codice contrigger.RequestAsync()
.Quando l'attività in background viene attivata, il debugger verrà collegato e verrà visualizzato l'output di debug in Visual Studio.
Eseguire il debug dell'attivazione delle attività in background
Nota
Questa sezione è specifica per le attività in background che eseguono out-of-process e non si applicano alle attività in background in-process.
L'attivazione delle attività in background dipende da tre aspetti:
- Nome e spazio dei nomi della classe dell'attività in background
- Attributo del punto di ingresso specificato nel manifesto del pacchetto
- Punto di ingresso specificato dall'app durante la registrazione dell'attività in background
Usare Visual Studio per prendere nota del punto di ingresso dell'attività in background:
- In C# e C++, annotare il nome e lo spazio dei nomi della classe di attività in background specificata nel progetto di attività in background.
Usare la finestra di progettazione del manifesto per verificare che l'attività in background sia dichiarata correttamente nel manifesto del pacchetto:
- In C# e C++, l'attributo del punto di ingresso deve corrispondere allo spazio dei nomi dell'attività in background seguito dal nome della classe. Ad esempio: RuntimeComponent1.MyBackgroundTask.
- È necessario specificare anche tutti i tipi di trigger usati con l'attività.
- L'eseguibile NON DEVE essere specificato a meno che non si usi ControlChannelTrigger o PushNotificationTrigger.
Solo Windows. Per visualizzare il punto di ingresso usato da Windows per attivare l'attività in background, abilitare la traccia di debug e usare il registro eventi di Windows.
Se si segue questa procedura e il registro eventi mostra il punto di ingresso o il trigger non corretto per l'attività in background, l'app non registra correttamente l'attività in background. Per informazioni su questa attività, vedere Registrare un'attività in background.
- Aprire il visualizzatore eventi passando alla schermata Start e cercando eventvwr.exe.
- Passare a Registri di applicazione e servizi ->Microsoft ->Windows ->BackgroundTaskInfrastructure nel visualizzatore eventi.
- Nel riquadro azioni selezionare Visualizzare ->Mostra log analitici e di debug per abilitare la registrazione diagnostica.
- Selezionare il Diagnostic log e fare clic su Abilita log.
- Provare ora a usare l'app per registrare e attivare nuovamente l'attività in background.
- Visualizzare i log di diagnostica per informazioni dettagliate sugli errori. Questo includerà il punto di ingresso registrato per l'attività in background.
Attività in background e distribuzione del pacchetto di Visual Studio
Se un'app che usa attività in background viene distribuita con Visual Studio e la versione (principale e/o secondaria) specificata in Progettazione manifesti viene aggiornata, successivamente la ri-distribuzione dell'app con Visual Studio potrebbe causare la stalla delle attività in background dell'app. Ciò può essere rimediato come segue:
- Usare Windows PowerShell per distribuire l'app aggiornata (invece di Visual Studio) eseguendo lo script generato insieme al pacchetto.
- Se l'app è già stata distribuita con Visual Studio e le relative attività in background sono ora bloccate, riavviare o disconnettersi/accedere per ripristinare il funzionamento delle attività in background dell'app.
- È possibile selezionare l'opzione di debug "Reinstallare sempre il pacchetto" per evitare questo problema nei progetti C#.
- Attendere che l'app sia pronta per la distribuzione finale per incrementare la versione del pacchetto (non modificarla durante il debug).
Osservazioni:
- Assicurarsi che l'app verifichi la presenza di registrazioni di attività in background esistenti prima di registrare nuovamente l'attività in background. Più registrazioni della stessa attività in background possono causare risultati imprevisti eseguendo l'attività in background più volte ogni volta che viene attivata.
- Se l'attività in background richiede l'accesso alla schermata di blocco, assicurarsi di inserire l'app nella schermata di blocco prima di provare a eseguire il debug dell'attività in background. Per informazioni su come specificare le opzioni del manifesto per le app che supportano la schermata di blocco, vedere Dichiarare le attività in background nel manifesto dell'applicazione.
- I parametri di registrazione delle attività in background vengono convalidati al momento della registrazione. Se uno dei parametri di registrazione non è valido, viene restituito un errore. Assicurarsi che l'app gestisca correttamente gli scenari in cui la registrazione delle attività in background ha esito negativo. Se invece l'app dipende dalla presenza di un oggetto di registrazione valido dopo il tentativo di registrazione di un'attività, potrebbe verificarsi un arresto anomalo.
Per altre informazioni sull'uso di Visual Studio per eseguire il debug di un'attività in background, vedere Come attivare eventi di sospensione, ripresa e in background nelle app UWP.
Argomenti correlati
- Creare e registrare un'attività in background out-of-process
- Creare e registrare un'attività in background in-process
- Registrare un'attività in background
- Dichiarare le attività in background nel manifesto dell'applicazione
- Linee guida per le attività in background
- Come attivare eventi di sospensione, ripresa e background nelle app UWP
- Panoramica dell'analisi del codice per .NET in Visual Studio