vb .net下载文件 - 如果错误下载下一个文件

时间:2017-11-08 19:22:52

标签: vb.net downloadfile

您有一堆要下载的文件,从1到X。 我做了一个后台工作人员,可以轻松下载文件。

但有时,服务器中缺少文件。 例如,它的文件从1到100,但它丢失的文件48和78。 我的代码在下载文件48时抛出错误然后停止。我希望在despiste之后尝试下载文件,该文件不存在。

我无法使其发挥作用。

我的代码:

    Private Sub BackgroundWorker2_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork
    For value As Integer = 1 To TextBox3.Text
        Try
            Dim filepath = FolderBrowserDialog1.SelectedPath & "\" & value & ".png"
            My.Computer.Network.DownloadFile(TextBox4.Text & value & TextBox5.Text, filepath, False, 500)
            Dim percentage As String = value / TextBox3.Text * 100
            BackgroundWorker2.ReportProgress(percentage, "Run coding 1")
        Catch err As ApplicationException
            Console.WriteLine(err.Message)
        End Try
    Next
End Sub

1 个答案:

答案 0 :(得分:1)

@litelite和@N0Alias是正确的。您需要在循环中捕获正确的异常。此外,要将错误传达给您的控制台或主线程,您应该做到与众不同。您正在直接从后台线程触摸您的UI,这可能会出错或导致奇怪的行为。使用ReportProgress功能更好。

Dim percentage As String
For value As Integer = 1 To TextBox3.Text
    Try
        Dim filepath = FolderBrowserDialog1.SelectedPath & "\" & value & ".png"
        percentage = value / TextBox3.Text * 100
        My.Computer.Network.DownloadFile(TextBox4.Text & value & TextBox5.Text, filepath, False, 500)
        BackgroundWorker2.ReportProgress(percentage, "Run coding 1")
    Catch err As Exception
        BackgroundWorker2.ReportProgress(percentage, "Error: " & err.Message)
    End Try
Next

在后台工作完成之前正确地与UI线程通信。您的ReportProgress事件处理程序将需要显示此内容。