ユーザーがフォームで選択した内容に基づいて、複数のファイルをダウンロードしようとしています。複数のチェックボックスが配置されているため、ユーザーがチェックボックス 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
チェックされたすべてのファイルをダウンロードするようにこれをプログラミングするにはどうすればよいですか? ダウンロードされたファイルの合計数や残り時間を示すプログレス バーのみがユーザーに表示されてもかまいませんが、すべてのダウンロードが完了したときに何かを表示する必要があります。
助言がありますか?