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
Gestire domini wildcard in Azure Container Apps
Definire stili a livello di libreria in Angular
Generare velocemente pagine CRUD in Blazor con QuickGrid
Miglioramenti agli screen reader e al contrasto in Angular
Utilizzare una qualunque lista per i parametri di tipo params in C#
Sfruttare al massimo i topic space di Event Grid MQTT
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Evitare il flickering dei componenti nel prerender di Blazor 8
C# 12: Cosa c'è di nuovo e interessante
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Eliminare una project wiki di Azure DevOps