首先我嘗試了兩個:
DownloadProgressChangedEventHandler 和 AsyncCompletedEventHandler 有點不起作用。然后我嘗試了兩者:
client.DownloadProgressChanged = Client_DownloadProgressChanged;
client.DownloadFileCompleted = Client_DownloadFileCompleted;
這一次它立即進入完成的事件,它不下載也不更新progressBar1。
private void Download()
{
WebClient client = new WebClient();
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
client.DownloadProgressChanged = new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted = new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadProgressChanged = Client_DownloadProgressChanged;
client.DownloadFileCompleted = Client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri("https://speed.hetzner.de/10GB.bin"), desktop);
}
private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
label1.Text = "Download Completed";
}
private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Maximum = (int)e.TotalBytesToReceive / 100;
progressBar1.Value = (int)e.BytesReceived / 100;
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Maximum = (int)e.TotalBytesToReceive / 100;
progressBar1.Value = (int)e.BytesReceived / 100;
}
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Download();
}
uj5u.com熱心網友回復:
宣告button1_Click和Download方法是async并在await之前添加client.DownloadFileAsync。
或者你可以使用同步版本 client.DownloadFile
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318261.html
