【发布时间】:2020-07-04 09:13:12
【问题描述】:
我有一个 BackgroundWorker 来下载图像文件并在 PictureBox 中查看它。 我想报告该下载的进度(因为它可能是一个大图像文件)并更新 ProgressBar。看来我找不到合适的方法。
我在 Microsoft 文档中找到了 this 文章,但它仅包含 C# 用法。谁能指出我正确的方向?
我在 BackgroundWorker 中的实际代码:
Private Sub BackgroundWorker3_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker3.DoWork
Dim Test1 As String = "DOWNLOAD URL"
Dim tClient As WebClient = New WebClient
Dim tImage As Bitmap = Bitmap.FromStream(New MemoryStream(tClient.DownloadData(Test1)))
PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
PictureBox1.Image = tImage
End Sub
我猜它类似于 BackgroundWorker 的 ReportProgress,但由于我不知道实际文件大小,因此无法理解如何将其应用到下载数据中:
ReportProgress(Convert.ToInt32((contagem / count) * 100))
【问题讨论】:
-
参见WebClient.DownloadDataAsync 方法。下载过程引发DownloadProgressChanged 事件,该事件还提供进度百分比。顺便说一句,BackGroundWorker 并不像那样工作。几乎所有这些对象都不能以这种方式在
DoWork事件中使用。 -
我找到了这篇文章...您可以从该页面的语言下拉列表中选择 VB.NET。
标签: .net vb.net progress-bar webclient backgroundworker