Nello script #95 abbiamo visto com'è possibile eseguire il download di file remoti in background, grazie a BackgroundDownloader, presente nel namespace Windows.Networking.BackgroundTransfer.
I download in background escono dal ciclo di vita dell'app, quindi dobbiamo monitorarli grazie al metodo GetCurrentDownloadsAsync di BackgroundDownloader.
Il metodo restituisce una collezione di DownloadOperation di cui possiamo recuperare l'IAsyncOperationWithProgress con AttachAsync e staccare il suo task con il noto overload AsTask.
IReadOnlyList<DownloadOperation> downloads = await BackgroundDownloader.GetCurrentDownloadsAsync(); foreach (var download in downloads) { var progress = new Progress<DownloadOperation>(OnProgress); try { IAsyncOperationWithProgress<DownloadOperation, DownloadOperation> downloadOperation = download.AttachAsync(); await downloadOperation.AsTask(progress); } catch (Exception ex) { status.Text = ex.Message; } }
Al metodo AsTask possiamo passare come parametro un oggetto di tipo Progress
private void OnProgress(DownloadOperation operation) { var uri = operation.RequestedUri; status.Text = operation.Progress.Status.ToString(); progress.Text = (operation.Progress.BytesReceived * 100 / operation.Progress.TotalBytesToReceive).ToString("0"); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migrare da Azure DevOps a GitHub
Utilizzare una sequence per generare numeri sequenziali con Entity Framework Core
Le regole da seguire per effettuare la migrazione a Bootstrap 5
Le novità di TypeScript 4.3
Generare un QR Code da ASP.NET Web API
Comprimere le immagini contenute in un repository con una GitHub Action
Integrare dive nelle pipeline di Azure DevOps e GitHub
Tenere sotto controllo la working directory di un self-hosted agent di Azure DevOps
Entity Framework Core 6
Eliminare spazio inutilizzato in un Azure Container Registry
Compilare automaticamente applicazioni .NET 6 con le pipeline di Azure DevOps e GitHub Action
Produrre un inventario automatico di Azure Storage