您有一堆要下载的文件,从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
答案 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事件处理程序将需要显示此内容。