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
Migliorare la sicurezza dei prompt con Azure AI Studio
Utilizzare WhenEach per processare i risultati di una lista di task
Creare un webhook in Azure DevOps
Recuperare l'ultima versione di una release di GitHub
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Proteggere le risorse Azure con private link e private endpoints
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare Azure Cosmos DB con i vettori
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Generare una User Delegation SAS in .NET per Azure Blob Storage
Utilizzare Container Queries nominali
Ordinare randomicamente una lista in C#