我正在制作这个应用程序,我必须根据是否选中复选框从我的网站下载多个文件。我正在使用 DownloadFileAsync 方法下载文件。
我遇到的问题是,一旦开始下载第一个文件。它继续使用其余的代码。例如。它会在下载完成之前将“1”添加到列表框,然后继续下一个 if 语句并为其执行下载,并在下载开始后立即将“2”添加到列表框。下面是我正在使用的代码。
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri("https://speed.hetzner.de/100MB.bin"), "100mb");
listBox1.Items.Add("1");
}
if (checkBox2.Checked)
{
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri("https://speed.hetzner.de/100MB.bin"), "200mb");
listBox1.Items.Add("2");
}
}
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;
progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
}
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
progressBar1.Value = 0;
}
我尝试使用异步并等待,但我无法让它工作。简而言之,我怎样才能让代码完全下载第一个文件,然后在列表框中添加“1”,然后才移动到第二个 if 语句以下载第二个文件。
提前致谢。