Come eseguire il debug di un'attività in background (app di Windows Runtime)
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
In questo argomento sezione imparerai a eseguire il debug di un'attività in background, inclusa la traccia dell'attivazione e del debug nel registro eventi di Windows.
Cosa sapere
Tecnologie
Prerequisiti
- Questo argomento presuppone l'esistenza di un'app con un'attività in background di cui è necessario eseguire il debug.
Istruzioni
Assicurati che il progetto dell'attività in background sia configurato correttamente
- In C# e C++ verifica che il progetto principale faccia riferimento al progetto dell'attività principale. Se il riferimento non è impostato, l'attività in background non verrà inclusa nel pacchetto dell'app usando l'attributo del punto di ingresso.
- In C# e C++ verifica che il progetto dell'attività in background Output type sia "WinMD File".
- In JavaScript il processo di lavoro con attività in background deve essere incluso nel proprio file JavaScript.
- L'attività in background deve essere dichiarata nel manifesto dell'applicazione. Le attività JavaScript vengono dichiarate usando l'attributo della pagina iniziale, mentre altre attività vengono dichiarate usando l'attributo del punto di accesso.
Attiva manualmente le attività in background per eseguire il debug del codice delle attività
Le attività in background possono essere attivate manualmente attraverso Microsoft Visual Studio Express 2012 per Windows 8. Puoi quindi eseguire le istruzioni del codice e completarne il debug.
In C#, inserisci un punto di interruzione nel metodo Run e/o scrivi l'output di debug tramite System.Diagnostics.
In C++ inserisci un punto di interruzione nel metodo Run e/o scrivi l'output di debug tramite OutputDebugString.
In JavaScript inserisci un punto di interruzione nel file JavaScript dell'attività in background e/o scrivi l'output di debug tramite debug object.
Attiva l'attività in background usando il menu a discesa Sospendi disponibile nella barra degli strumenti Posizione di debug. Questo menu a discesa mostra i nomi delle attività in background che è possibile attivare tramite Visual Studio.
Affinché questo funzioni, è necessario che l'attività in background sia già registrata e che sia ancora in attesa del trigger. Ad esempio, se un'attività in background è stata registrata con un TimeTrigger singolo e tale trigger è già stato generato, l'avvio dell'attività tramite Visual Studio non avrà alcun effetto.
Nota Le attività in background che usano ControlChannelTrigger o PushNotificationTrigger e quelle che usano SystemTrigger con il tipo di trigger SmsReceived non possono essere attivate in questo modo.
Quando l'attività in background viene attivata, il debugger si associa a essa e visualizza l'output di debug in VS.
Attivazione del debug di un'attività in background
L'attivazione delle attività in background dipende dalla corretta combinazione di tre fattori. In questa procedura viene spiegato come verificare e assicurarsi che questi fattori corrispondano.
- Nome e spazio dei nomi della classe dell'attività in background (per JavaScript si tratta del percorso e del nome file dell'attività)
- Attributo del punto di ingresso specificato nel manifesto del pacchetto (per JavaScript si tratta dell'attributo della pagina iniziale)
- Punto di ingresso specificato dall'app durante la registrazione dell'attività in background
Usa Visual Studio per prendere nota del punto di ingresso dell'attività in background:
- In C# e C++ prendi nota del nome e dello spazio dei nomi della classe dell'attività in background specificata nel progetto dell'attività.
- In JavaScript prendi nota del percorso del file dell'attività in background e del nome file.
Usa Progettazione manifesto per verificare che l'attività in background sia correttamente dichiarata 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: Tasks.MyBackgroundTask.
- In JavaScript l'attributo della pagina iniziale deve corrispondere al percorso del file JavaScript per il processo di lavoro dell'attività in background. Ad esempio: js\MyBackgroundTask.js.
- È inoltre necessario specificare tutti i tipi di trigger usati con l'attività.
- NON BISOGNA specificare l'eseguibile a meno che non usi ControlChannelTrigger o PushNotificationTrigger.
Solo Windows. Per visualizzare il punto di ingresso usato da Windows per attivare l'attività in background, esegui enable debug tracing e usa il registro eventi di Windows.
Se ti attieni alla procedura e il registro eventi indica il punto di ingresso o il trigger errato per l'attività in background, l'app non registra correttamente l'attività. Per informazioni su questa attività, vedi Come registrare un'attività in background.
- Apri il visualizzatore eventi passando alla schermata Start e cercando eventvwr.exe.
- Vai a Registri applicazioni e servizi -> Microsoft -> Windows -> BackgroundTaskInfrastructure nel visualizzatore eventi.
- Nel riquadro azioni seleziona Visualizza -> Visualizza registri analitici e di debug per abilitare la registrazione diagnostica.
- Seleziona Registro di diagnostica e fai clic su Attiva registro.
- Prova ora a usare l'app per registrare e attivare di nuovo l'attività in background.
- Per informazioni dettagliate sull'errore, visualizza i registri di diagnostica. Questi registri includeranno il punto di ingresso registrato per l'attività in background.
Attività in background e distribuzione del pacchetto Visual Studio
Se un'app che usa attività in background viene distribuita usando Visual Studio e la versione (principale e/o secondaria) specificata nella finestra di progettazione del manifesto viene aggiornata, una nuova distribuzione dell'app con Visual Studio potrebbe comportare il blocco delle attività in background. Il problema può essere risolto nel modo seguente:
- Usa Windows PowerShell per distribuire l'app aggiornata (anziché Visual Studio) eseguendo lo script generato insieme al pacchetto.
- Se hai già distribuito l'app usando Visual Studio e le relative attività in background si sono bloccate, riavvia il sistema, oppure disconnettiti e riconnettiti, in modo che le attività in background riprendano a funzionare.
- Puoi selezionare l'opzione di debug "Reinstalla sempre il pacchetto" per evitare questo problema nei progetti C#.
- Attendi finché l'app non è pronta per la distribuzione finale prima di aumentare la versione del pacchetto (non cambiarla durante il debug).
Osservazioni
Altri suggerimenti per il debug delle attività in background:
- Al termine, le attività in background JavaScript devono chiamare close(). Se l'attività in background non chiama close(), il processo dell'attività continuerà a essere eseguito, con conseguente consumo inutile della batteria e un comportamento imprevisto.
- Assicurati che l'app verifichi la presenza di registrazioni esistenti dell'attività in background prima di registrarla nuovamente. Più registrazioni della stessa attività in background possono causare risultati imprevisti perché a ogni attivazione l'attività in background viene eseguita più di una volta. Per informazioni su questa attività, vedi Come ottenere un elenco di attività in background in sospeso.
- Se l'attività in background richiede l'accesso alla schermata di blocco, assicurati di inserire l'app nella schermata di blocco prima di provare a eseguire il debug dell'attività. Per informazioni su come specificare le opzioni del manifesto per le app che supportano la schermata di blocco, vedi Come visualizzare le notifiche nella schermata di blocco e Come dichiarare le attività in background nel manifesto dell'applicazione.
- A partire da Windows 8.1, i parametri di registrazione dell'attività in background vengono convalidati al momento della registrazione. Se uno dei parametri di registrazione non è valido, viene restituito un errore. Assicurati che la tua app gestisca correttamente gli scenari in cui si verifica un errore di registrazione dell'attività in background. Se l'app richiede un oggetto registrazione valido dopo il tentativo di registrazione di un'attività, potrebbe arrestarsi in modo anomalo. La tua app può ad esempio usare un'istruzione condizionale per controllare la presenza di errori di registrazione e quindi eseguire un nuovo tentativo in caso di errore della registrazione con valori dei parametri diversi.
Per altre informazioni sull'uso di VS per eseguire il debug di un'attività in background, vedi Come attivare eventi di sospensione e ripresa ed eventi in background nelle app di Windows Store.
Argomenti correlati
Guida introduttiva: Creare e registrare un'attività in background
Come registrare un'attività in background
Come dichiarare le attività in background nel manifesto dell'applicazione
Linee guida ed elenco di controllo per le attività in background
Come attivare eventi di sospensione e ripresa ed eventi in background nelle app di Windows Store