我正试图根据用户在表单上选择的内容下载多个文件。我有多个复选框,所以如果用户选择复选框1,3,4,我希望web客户端下载文件1.txt, 3.txt, 4.txt。WebClient方法导致"WebClient不支持并发I/O操作"错误。
If chk1.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/1.txt), Path.Combine(DataSource & strDirectory, "1.txt"))
End If
If chk2.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/2.txt), Path.Combine(DataSource & strDirectory, "2.txt"))
End If
If chk3.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/3.txt), Path.Combine(DataSource & strDirectory, "3.txt"))
End If
If chk4.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/4.txt), Path.Combine(DataSource & strDirectory, "4.txt"))
End If
我确实有一个进度条来跟踪下载,以及一个调用消息框的完成事件。
Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
MessageBox.Show("Download complete", "Download", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
我该如何编程来下载选中的所有文件?我不介意用户只看到显示下载文件总数或剩余时间的进度条,但我确实需要一些东西来显示所有下载完成的时间。
有什么建议吗?
我认为是因为您使用单个WebClient实例同时执行多个HTTP请求。尝试使用多个实例