Scaricare file remoti di grandi dimensioni può richiedere un tempo piuttosto lungo, tale da incorrere nella sospensione dell'app.
In questo caso tutte le operazioni dell'app stessa vengono interrotte prima che il download sia completato.
In WinRT abbiamo la possibilità di eseguire questo tipo di operazioni in background grazie alla classe BackgroundDownloader, presente nel namespace Windows.Networking.BackgroundTransfer.
StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("download.pdf", CreationCollisionOption.GenerateUniqueName); var downloader = new BackgroundDownloader(); DownloadOperation operation = downloader.CreateDownload(new Uri("http://repository.com/filedigrandidimensioni.pdf"), file);
Dopo aver creato il file destinatario del download è sufficiente creare l'istanza di BackgroundDownloader e richiamare il metodo CreateDownload specificando l'url della risorsa da scaricare.
Con CreateDownload il processo di download esce dal ciclo di vita dell'app e passa al sistema operativo, quindi sarà nostra cura monitorare il download e controllare lo stato del file, per poterlo utilizzare.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare lo streaming di una chiamata Http da Blazor
Semplificare il deployment di siti statici con Azure Static Web App
Criptare la comunicazione con mTLS in Azure Container Apps
Utilizzare i primary constructor di C# per inizializzare le proprietà
Effettuare il pull di git LFS in un workflow di GitHub
Utilizzare le collection expression in C#
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Routing statico e PreRendering in una Blazor Web App
Utilizzare gli snapshot con Azure File shares
Eseguire attività basate su eventi con Azure Container Jobs
Eseguire attività pianificate con Azure Container Jobs