2014-04-23 39 views
0

使用下面的事件怎麼會顯示一個文件剩餘的總時間 轉移進度條工作正常,但我想顯示 剩餘時間的金額以及如果可能的話總EST下載時間

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 
+3

http://xkcd.com/612/ –

回答

1

現在很多進度條並不這樣做,因爲信息並不總是可靠的。過去的表現並不能保證未來的結果。

但是,如果你想,這種方法之外,在下載開始你要存儲當前時間。然後在此方法中計算自那時起已經過的秒數。那麼你只需要一些簡單的數學。 transferredBytes花了X秒,因此totalbytess應該花費Y秒。因此,如果您要傳輸10MB(10485760字節),並且您已經收到2MB(2097152字節),並且已經過了20秒,則您將以104,857.6字節/秒的速率傳輸數據。你還剩下8MB(8388608),所以8388608除以104857.6就是80秒。

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