#vb.net #webclient #downloadfileasync
#vb.net #webclient #downloadfileasync
Вопрос:
Я пытаюсь загрузить несколько файлов на основе того, что пользователь выбрал в форме. У меня есть несколько флажков, поэтому, если пользователь установит флажки 1,3,4, я бы хотел, чтобы webclient загружал файлы 1.txt , 3.txt , 4.txt . Метод WebClient вызывает сообщение «WebClient не поддерживает параллельные операции ввода-вывода». ошибка.
If chk1.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/1.txt), Path.Combine(DataSource amp; strDirectory, "1.txt"))
End If
If chk2.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/2.txt), Path.Combine(DataSource amp; strDirectory, "2.txt"))
End If
If chk3.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/3.txt), Path.Combine(DataSource amp; strDirectory, "3.txt"))
End If
If chk4.Checked Then
WC.DownloadFileAsync(New Uri("http://www.google.com/4.txt), Path.Combine(DataSource amp; 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
Как я мог бы запрограммировать это, чтобы загрузить все проверенные файлы?
Я не возражаю, если пользователь видит только индикатор выполнения, показывающий общее количество загруженных файлов или оставшееся время, но мне нужно что-то показать, когда все загрузки будут завершены.
Есть предложения?
Ответ №1:
Я думаю, это из-за того, что вы используете один экземпляр WebClient для одновременного выполнения нескольких HTTP-запросов. Попробуйте использовать несколько экземпляров.