2014-09-05 14 views
10

Sto lavorando a un'applicazione Windows Phone 8.1. Sono circa un mese nel progetto e ho visto poco o nessun problema con quello che ho scritto finora.L'applicazione Windows Phone 8.1 si blocca quando non si esegue il debug async. Attesa

Ho deciso di eseguire alcuni test sull'applicazione senza eseguirlo tramite il debugger di VS 2013. Ora, per qualche motivo, l'app si arresta in modo anomalo prima che arrivi alla prima schermata. Non ottengo eccezioni o messaggi di sorta (sto usando Raygun per la registrazione degli errori).

Sto usando i metodi asincroni in tutto (qualche vuoto asincrono, altri compiti asincroni), ma tutto ciò funziona quando si esegue il debug.

La cosa principale che potrebbe aiutare, è ottenere una sorta di messaggio di errore. Sono stato ridotto a commentare sezioni di codice, ma alla fine questo non mi porta da nessuna parte perché sembra che quando penso di aver trovato il problema, ottengo un altro incidente più avanti nel codice.

A un certo punto, ho riscontrato un problema con la chiamata: ListView.UpdateLayout(). Ho commentato questo e l'applicazione funzionerebbe correttamente senza arresti anomali. Ho quindi annullato la segnalazione di alcuni codici più in basso e ora si sta di nuovo arrestando.

Se qualcuno conosce un modo per ottenere le eccezioni dal telefono o se qualcuno ha riscontrato questo problema in precedenza, qualsiasi aiuto sarebbe molto apprezzato. Posso fornire ogni ulteriore informazione necessaria.

UPDATE: Credo di aver ridotto il problema fino a Sqlite.NET. Sto usando Sqlite.Net per WinRT insieme a un'estensione chiamata SqliteNetExtensions. La particolare affermazione è

DataContext.Context.Connection.Table<Message>().Where(m => m.ChannelID == channelID && m.ChannelID.Contains("C")).ToList(); 

Se commento questo, l'applicazione funziona senza problemi. Questa dichiarazione LINQ restituisce al massimo 100 record. Non penserei che una dichiarazione SELECT di 100 record possa causare l'arresto anomalo dell'app, ma sembra il colpevole. Qualche idea su come ottimizzare Sqlite.NET?

UPDATE 2: Finalmente capito! Non era affatto SQLite. Non era affatto il mio codice. Era il mio telefono Sto eseguendo un'icona Nokia Lumia. Ho installato Rudy Huyn's Lockscreen Beta alcune settimane fa. Ha causato alcuni problemi quando l'ho disinstallato ma non era correlato alla mia applicazione. Oggi, ho fatto installare al mio business partner la mia app sul suo telefono, lui ha lo stesso modello di telefono. L'app è stata circa 50 volte più veloce e non si è bloccata. Ho ripristinato il mio telefono dalla fabbrica e, ecco, funzionava perfettamente. Quindi, un consiglio per professionisti: NON INSTALLARE IL BISCOTTO BETA DI RUDY HUYN !!!

+0

È possibile provare i registri nel Visualizzatore eventi sotto * Applicazioni & Servizi ** ** di Microsoft di Windows ** Appx \ **. –

+0

@JeroenVannevel Grazie, ma non mi sta dando molto. Quello di cui ho veramente bisogno è un modo per vedere i registri di errori/eventi che si trovano sul telefono stesso. C'è un modo per arrivare a queste informazioni? –

+0

metti l'intero contenuto del metodo in un try-catch e cattura l'eccezione in un messagedialog? –

risposta

1

Per inciso, mi prenderò il tempo necessario per evitare di utilizzare il vuoto asincrono. È ben documentato che il vuoto asincrono è spesso una ricetta per i guai.

C'è un buon articolo sugli svantaggi mostrato here

Problemi correlati