Я думаю, что вы делаете это немного неправильно. Я думаю, что вам повезет, если вы подсчитаете общую скорость, измерив общее число переданных байтов, а затем разделите их на общее количество прошедших секунд.
Например, что-то вроде этого:
Dim chunksize As Integer = 2048
Dim offset As Long = 0
Dim readBytes As Long = 0
Dim startTime As DateTime
Dim duration As Double
startTime = DateTime.Now
While offset < Buffer.Length
readBytes = fileStream.Read(Buffer, 0, chunksize)
requestStream.Write(Buffer, 0, readBytes)
offset += readBytes
duration = startTime.Subtract(Date.Now).TotalSeconds
' Avoid divide by 0 errors
If duration = 0 Then
duration = 1
End If
RaiseEvent FileSpeed(Math.Round(offset / duration, 2).ToString)
RaiseEvent FileProgress(offset, Buffer.Length)
End While