【问题标题】:vb .net download files - if error download next filevb .net 下载文件 - 如果错误下载下一个文件
【发布时间】:2018-04-21 15:07:13
【问题描述】:

您好,有一堆文件要下载,编号从 1 到 X。 我创建了一个后台工作人员,可以轻松而酷地下载文件。

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

我不能让它工作。

我的代码:

    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

【问题讨论】:

  • 您只需要弄清楚当文件丢失时会引发什么异常并捕获它。
  • 要添加@litelite 所说的内容,只需执行“Catch err As Exception”而不是 ApplicationException,它会吞下错误。
  • 但是由于我有一个后台工作人员,我如何才能在我的主窗体中为 texytbox 传递该异常?
  • 这些文件都在你的局域网上还是在网络上的某个地方?
  • 他们在线。

标签: vb.net downloadfile


【解决方案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 事件处理程序将需要显示此内容。

【讨论】:

    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-12-23
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多