You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何实现实时显示当前下载任务信息的功能

VB.NET 实现下载信息实时提示功能方案

核心实现思路

通过Label控件实时展示当前下载的文件名、下载状态,ProgressBar控件展示下载进度,基于My.Computer.Network.DownloadFile方法实现下载逻辑,解决原生同步下载导致的UI阻塞问题,保证状态实时刷新,全部下载完成后展示完成提示。

前置准备

在窗体中添加以下控件:

  • 1个Label控件(命名为lblStatus):用于展示下载提示文本
  • 1个ProgressBar控件(命名为pbDownload):用于展示下载进度
  • 可选:1个Button控件(命名为btnStartDownload):用于触发下载任务

实现注意点

你提供的示例代码存在UI线程阻塞问题:直接在UI线程同步执行下载方法时,界面会等到所有逻辑执行完毕才会刷新,无法实现实时提示效果。需要在更新控件状态后强制刷新UI,或把下载逻辑放到后台线程执行。

完整可运行代码

Public Class DownloadForm
    ' 定义待下载文件列表:(远程文件地址, 本地保存文件名)
    Private ReadOnly _downloadTaskList As New List(Of (FileUrl As String, LocalName As String)) From {
        ("https://URL.com/VisualStudio.exe", "VisualStudio.exe"),
        ("https://URL.com/Visual.exe", "Visual.exe")
    }

    Private Sub btnStartDownload_Click(sender As Object, e As EventArgs) Handles btnStartDownload.Click
        ' 初始化进度条
        pbDownload.Maximum = _downloadTaskList.Count
        pbDownload.Value = 0
        lblStatus.Text = "准备开始下载..."

        ' 依次执行每个下载任务
        For Each task In _downloadTaskList
            ' 更新当前下载文件提示
            lblStatus.Text = $"Downloading - {task.LocalName}"
            ' 强制刷新控件,避免下载阻塞导致UI不更新
            lblStatus.Refresh()
            pbDownload.Refresh()

            Try
                ' 执行文件下载
                My.Computer.Network.DownloadFile(
                    address:=task.FileUrl,
                    destinationFileName:=task.LocalName,
                    userName:=String.Empty,
                    password:=String.Empty,
                    showUI:=False,
                    connectionTimeout:=100000,
                    overwrite:=True
                )
                ' 单文件下载完成,进度+1
                pbDownload.Value += 1
            Catch ex As Exception
                lblStatus.Text = $"下载失败:{task.LocalName} - {ex.Message}"
                Exit Sub
            End Try
        Next

        ' 全部下载完成提示
        lblStatus.Text = "Downloaded!"
        MessageBox.Show("所有文件下载完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub
End Class

扩展优化

如果需要展示单个大文件的内部下载进度(而非按文件数量统计整体进度),可以使用My.Computer.Network.DownloadFile的带进度回调重载,在回调中实时更新进度条百分比,此时需要将进度条最大值设为100,根据回调返回的已下载字节数/总字节数计算进度值即可。如果下载文件体积普遍较大,建议将下载逻辑放到BackgroundWorker或异步Task中执行,彻底避免UI卡顿。


内容的提问来源于stack exchange,提问作者AC01 ac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:09:18