2011-11-21 14 views
6

Ho questo problema quando utilizzo il trasferimento file in background in WP7. Funziona perfettamente quando la mia applicazione è in esecuzione, ma non appena clicco sul pulsante Windows, si ferma (e riprende quando riattivo l'applicazione.) Lo scopo di Background File Transfer non è quello di funzionare in background, anche quando il tuo l'applicazione è disattivata? Deve essere in una classe separata (una sorta di classe agente di background, separata dal progetto principale?) Davvero frustrante, quando faccio tutto ciò che il tutorial qui dice: http://msdn.microsoft.com/en-us/library/hh202959(v=vs.92).aspx.Problemi di trasferimento file in background

Ci sono alcune cose "speciali" che devo fare per assicurarmi che venga eseguito in background, o alcuni metodi, forse quelli che ho creato da solo (per ottenere l'url ecc.), A cui non è possibile accedere mentre disattivato? Posso non aggiungere alla coda mentre è disattivato, forse?

Grazie mille per il vostro tempo :)

EDIT: Un po 'di debug mi dice che il file nella coda è in realtà il download. Finisce, ma non recupera il prossimo finché non riattiverò l'app. Non posso usare i miei metodi, variabili ecc. Quando lo faccio? Forse ho una coda interna per, diciamo, 20 articoli. Come posso quindi compilare la coda di download (max 5) quando questo si azzera?

EDIT2: Nel campione da Microsoft, si dice che è possibile aggiungere alla coda in un secondo momento:

// Check to see if the maximum number of requests per app has been exceeded. 
if (BackgroundTransferService.Requests.Count() >= 5) 
{ 
// Note: Instead of showing a message to the user, you could store the 
// requested file URI in isolated storage and add it to the queue later. 
MessageBox.Show("The maximum number of background file transfer requests for this application has been exceeded. "); 
return; 
} 

Ma non dice se siamo in grado di fare questo mentre in background oppure no. Dal momento che si tratta del trasferimento di file in background, dovrebbero averlo menzionato, altrimenti dovremmo assumere che possa essere fatto in background, il che sembra non essere il caso. Ma non possiamo saperlo. Chiunque può confermare questo 100%?

risposta

3

Ho esaminato anche questo e non è possibile (in base alla mia ricerca) compilare la coda dopo il max. 5 download in coda sono finiti. Ho pensato di utilizzare un agente in background ma BackgroundTransferRequest.Add non è disponibile dagli agenti in background, il che significa che l'unico modo per mettere in coda più download è quando l'app è in esecuzione (vedere Unsupported APIs for Background Agents for Windows Phone).

L'unica cosa che posso pensare è usare un agente in background per inviare una notifica per avvisare l'utente che i download sono terminati e che dovrebbero avviare l'app per accodare i prossimi cinque download. Questo è meno che ideale.

+0

Grazie per la risposta. Questo è fondamentalmente quello che ho scoperto, e non è affatto sufficiente. Presumo che ci debba essere un altro modo per farlo, qualcun altro ha guardato a questo e forse trovato una soluzione? – kgrevehagen

Problemi correlati