Sto tentando di modificare la progressione della barra di avanzamento mentre le modifiche allo stato di avanzamento del download dello WebClient
. Questo codice ancora scarica il file ancora quando chiamo startDownload()
la finestra si blocca mentre scarica il file. Vorrei che l'utente fosse in grado di vedere i cambiamenti di avanzamento mentre si caricava la schermata iniziale. C'è un modo per risolvere questo problema in modo che l'utente possa vedere il progresso della modifica progressBar2
?Download file asincrono con barra di avanzamento
private void startDownload()
{
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri("http://joshua-ferrara.com/luahelper/lua.syn"), @"C:\LUAHelper\Syntax Files\lua.syn");
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
double bytesIn = double.Parse(e.BytesReceived.ToString());
double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
double percentage = bytesIn/totalBytes * 100;
label2.Text = "Downloaded " + e.BytesReceived + " of " + e.TotalBytesToReceive;
progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
}
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
label2.Text = "Completed";
}
se la finestra si blocca significa che la persona sta scaricando sul thread dell'interfaccia utente che si traduce in un codice sincrono e non asincrono. – Joakim
Sto chiamando 'startDownload()' attraverso un background worker in esecuzione in modo asincrono. Ciò non dovrebbe però bloccare la finestra, giusto? –
Si prega di non anteporre i titoli con "C#" e così via. Ecco a cosa servono i tag. –