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
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Usare il colore CSS per migliorare lo stile della pagina
Ordinare randomicamente una lista in C#
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Testare l'invio dei messaggi con Event Hubs Data Explorer
Recuperare l'ultima versione di una release di GitHub
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Fornire parametri ad un Web component HTML
Utilizzare WhenEach per processare i risultati di una lista di task
Utilizzare Azure Cosmos DB con i vettori