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
Ottimizzazione dei block template in Angular 17
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare politiche di resiliency con Azure Container App
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Cambiare la chiave di partizionamento di Azure Cosmos DB
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Gestire liste di tipi semplici con Entity Framework Core
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Utilizzare un service principal per accedere a Azure Container Registry
Sfruttare MQTT in cloud e in edge con Azure Event Grid