总EST时间下载

时间:2014-04-23 12:47:16

标签: vb.net winforms

使用下面的事件,如何显示文件剩余的总时间     转移进度条工作正常,但我想显示的数量     如果可能的话还剩下时间

 Private Sub onTransferProgress(ByVal source As String, ByVal destination As String, ByVal transferredBytes As Integer, ByVal totalBytes As Integer, ByVal message As String) Handles transfer.onTransferProgress
    Dim totalbytess As Long = transferredBytes / 1024
    Dim mtotalbytes As Long = totalbytess / 1024
    Dim status As String = ""
    status = status & " Transfering Files - transferred: " & source & " to " & destination


    Me.ProgressBar1.Value = transferredBytes
    status = status & "Transferring.. " & (ProgressBar1.Value / 1024).ToString()

    Me.tbStatus.Text = status
    lblWorking.Text = message
    lblWorking.Visible = True

End Sub

1 个答案:

答案 0 :(得分:1)

如今,许多进度条都没有这样做,因为信息并不总是可靠的。过去的表现并不能保证未来的结果。

但是如果您想在此方法之外,在下载开始时您将要存储当前时间。然后在此方法中计算自该时间以来经过的秒数。然后你就会有一些简单的数学。 transferredBytes需要X秒,因此totalbytess需要Y秒。

因此,如果您要传输10MB(10485760字节)并且已经收到2MB(2097152字节)并且已经过了20秒,那么您将以104,857.6字节/秒的速率进行传输。你有8MB(8388608),所以8388608除以104,857.6是80秒。

Dim remainingBytes = totalbytess - mtotalbytes
Dim currentTransferRate = mtotalbytes / <your time calculation here>
Dim remainingSeconds = remainingBytes / currentTransferRate