【问题标题】:Can't Multi Download With WebClient无法使用 WebClient 进行多次下载
【发布时间】:2015-10-26 15:56:32
【问题描述】:

我知道以前有人问过这个问题,但是我有一种特殊的方式我想通过网络客户端下载文件,我想通过Do While 语句一次下载每个文件,但它只是添加了文件下载并继续执行下一个任务,该任务还会下载另一个文件,因此它会相互抵消并使应用程序崩溃。

Private Function StartDownloads()        
        Dim wc As New WebClient
        AddHandler wc.DownloadProgressChanged, AddressOf DownloadProgressChanged
        AddHandler wc.DownloadFileCompleted, AddressOf DownloadFileCompleted
        Dim delimiterChars As Char() = {"+"c}
        Dim words As String() = RichTextBox1.Text.Split(delimiterChars)

        Dim i As Integer = 1
        Do While (i < words.Length)
            Dim delimiterChars1 As Char() = {"|"c}
            Dim words1 As String() = words(i).Split(delimiterChars1)

            Dim name As String = words1(0)
            Dim fileurl As String = words1(2)

            ToolStripStatusLabel1.Text = "Downloading " & name & ":"
            wc.DownloadFileAsync(New System.Uri(fileurl), Path.GetTempPath() & "\" & name)
            i = (i + 1)
        Loop
End Function

Private Sub DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
        ProgressBar1.Value = e.ProgressPercentage
        ToolStripStatusLabel2.Text = String.Format("{0} MB's / {1} MB's",
        (e.BytesReceived / 1024D / 1024D).ToString("0.00"),
        (e.TotalBytesToReceive / 1024D / 1024D).ToString("0.00"))
    End Sub

所以基本上在Do While 语句中它开始下载然后继续而不等待下载完成然后同时下载两者,然后使程序崩溃/干扰显示下载名称的标签,原因是与其他人不同的问题是我需要它来指定下载名称,因为我无法通过将下载添加到列表中来处理其他教程...

所以如果有人可以帮助我让Do While 语句等待下载完成然后继续下一个而不丢失文件名和类似的东西,请给我一些提示,谢谢!

我知道DownloadFile 等待下载完成然后继续,但我需要它来显示下载进度和下载字节和类似的东西......

附:抱歉,如果这令人困惑,因为很难解释,谢谢。

【问题讨论】:

  • 尝试使用await wc.DownloadFileTaskAsync(...) 而不是wc.DownloadFileAsync(),尽管从documentation 中不清楚在这种情况下是否会触发事件。如果他们不这样做,您要么在通话后有一个DoEvents 循环,要么切换到HttpClientimplement progress yourself
  • @GSerg 成功了,谢谢!

标签: vb.net visual-studio webclient


【解决方案1】:

通过添加await wc.DownloadFileTaskAsync(...),它完美运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2021-08-19
    相关资源
    最近更新 更多