使用下面的事件,如何显示文件剩余的总时间 转移进度条工作正常,但我想显示的数量 如果可能的话还剩下时间
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
答案 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