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
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Generare la software bill of material (SBOM) in GitHub
Disabilitare automaticamente un workflow di GitHub (parte 2)
Creare alias per tipi generici e tuple in C#
Gestione dell'annidamento delle regole dei layer in CSS
Eseguire script pre e post esecuzione di un workflow di GitHub
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Utilizzare database e servizi con gli add-on di Container App
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Gestire domini wildcard in Azure Container Apps
Utilizzare i primary constructor di C# per inizializzare le proprietà
Cambiare la chiave di partizionamento di Azure Cosmos DB
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub