Vb.net 2个进度条,用于多个文件下载

Vb.net 2个进度条,用于多个文件下载,vb.net,download,downloadfileasync,Vb.net,Download,Downloadfileasync,目前,我有一个队列系统,它放置所有要从中下载文件的链接,并一个接一个地下载它们 我一直想做的不是1条而是2条进度条。在所有文件下载完成之前,顶部进度条将显示当前文件的进度,下面的进度条将显示总体进度 我试着想出一些方法来做到这一点,但我不知道该怎么做 我尝试的是: If Me.fileUrls.Count = 1 Then CProgressBarTotal.Value = Help.ProgPercent.Text Else CProgressBarTotal.Value =

目前,我有一个队列系统,它放置所有要从中下载文件的链接,并一个接一个地下载它们

我一直想做的不是1条而是2条进度条。在所有文件下载完成之前,顶部进度条将显示当前文件的进度,下面的进度条将显示总体进度

我试着想出一些方法来做到这一点,但我不知道该怎么做

我尝试的是:

If Me.fileUrls.Count = 1 Then
    CProgressBarTotal.Value = Help.ProgPercent.Text
Else
    CProgressBarTotal.Value = Help.ProgPercent.Text / Me.fileUrls.Count
End If
后来我意识到,这是行不通的。我也试着去想其他的方法,但是,我什么都想不出来


有人知道我怎样才能做到这一点吗?谢谢。

若要使用第二个进度条跟踪下载的总字节数,请执行以下操作:

  • 在显示下载屏幕之前,确定要下载的总字节数。这里的细节取决于下载机制,但大多数FTP和HTTP服务器将提供文件大小。如果他们没有,你必须做出合理的估计。将其存储在可访问的成员变量中

  • 为下载的总字节数创建可访问的成员变量。将其绑定到更新单个文件进度的同一例程,以便每个下载“勾号”除了当前文件的百分比外,还累积“下载的字节数”字段,就像现在一样

  • 将总字节数绑定到“总百分比”进度条最大值。将下载的字节计数器绑定到进度条的位置


  • 额外要点:以动态方式配置绑定,以便在下载队列中添加(或删除)文件时,下载计数的总字节数将实时更新,进度栏将相应地重置进度。

    您不需要if语句:

    CProgressBarTotal.Value = (currentFileNumber / Me.fileUrls.Count + Help.ProgPercent.Text / 100 / Me.fileUrls.Count) * CProgressBarTotal.Maximum
    

    “总进度”栏的目标是什么?要以下载文件的百分比显示进度(在这种情况下,您的算法已关闭),或显示下载字节总数的百分比(在这种情况下,您需要将所有文件的大小相加,跟踪下载的所有字节,并使用总计作为您的比率)。任何一种方法都可以,但听起来总下载字节的百分比会更好。你有什么建议?我本来打算显示下载的文件的百分比,但我更喜欢下载的总字节的百分比。如果你想让它们同时进行,你现在不应该看多线程吗?不,我宁愿坚持我以前做的,我认为这样会更有效。你知道我以前做错了什么吗?只使用你子句中的“else”部分。不,那不行。因为它不会将它们全部堆叠起来,在顶部进度条重置后,底部进度条也会重置。您必须将“要下载的文件总数”成员和“已下载的文件”成员变量保留在其他位置,而不是每次重新计算。