Асинхронная загрузка файла с индикатором выполнения

Я пытаюсь изменить прогресс индикатора выполнения, когда изменяется прогресс загрузки WebClient . Этот код все еще загружает файл, но когда я вызываю startDownload () , окно зависает при загрузке файла. Я хотел бы, чтобы пользователь мог видеть изменение хода выполнения при загрузке экрана-заставки. Есть ли способ исправить это, чтобы пользователь мог видеть прогресс изменения progressBar2 ?

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";
}
22
задан John Saunders 27 February 2012 в 02:23
поделиться