Hallo Forum,
diesmal wende ich mich nicht mit einem drängenden Problem sondern vielmehr mit einem Verständnisproblem an euch:
Ich lade mittels WebClient einen große Datei asynchron aus dem Netz herunter (funktioniert auch einwandfrei). Weil ich nun ein wenig neugierig bin, wollte ich nun auch die Downloadgeschwindigkeit wissen. Hierzu habe ich mir folgendes einfallen lassen:
Module mdlDownload
Private WithEvents MCl As Net.WebClient
Private Timer1 As New System.Windows.Forms.Timer()
Private BytesNew As Long
Private BytesOld As Long
Dim dt As New DataTable("tblBytes")
...
Private Sub DownloadItem()
MCl = New Net.WebClient
MCl.DownloadFileAsync(New Uri(MBUrl), DownlFile)
'Timer zum ermitteln der Downloadgeschwindigkeit
AddHandler Timer1.Tick, AddressOf Timer1Events
Timer1.Interval = 10000 '10sec für ruhigere Anzeige
Timer1.Start()
'Tabelle zum protokollieren
dt.Columns.Add("new")
dt.Columns.Add("old")
dt.Columns.Add("diff")
Form1.DataGridView1.DataSource = dt
Form1.Show()
End Sub
Sub Timer1Events(ByVal myObject As Object, ByVal myEventArgs As EventArgs)
Dim FileInf As FileInfo = New FileInfo(DownlFile)
Dim dr As DataRow = dt.NewRow
BytesNew = FileInf.Length
Timer1.Stop()
frmMain.lblSpeed.Text = String.Format("Übertragungsrate: {0:0.0}kB/s", ( _
BytesNew - BytesOld) / 10240)
frmMain.lblSpeed.Visible = True
dr(0) = Math.Round(BytesNew / 10240, 1)
dr(1) = Math.Round(BytesOld / 10240, 1)
dr(2) = Math.Round(BytesNew / 10240, 1) - Math.Round(BytesOld / 10240, _
1)
dt.Rows.Add(dr)
Timer1.Enabled = True
BytesOld = FileInf.Length
End Sub
...
End Module Hier nun mal 5 Zeilen aus der Protokolltabelle: new old diff
5783,6 5545,1 238,5
5910,9 5783,6 127,3
6042,8 5910,9 131,9
6325,3 6042,8 282,5
6611,7 6325,3 286,4 Was mich nun sehr wundert ist, dass der parallel mitlaufende IE bei genau der gleichen Datei mit fast schon penetranter Sturheit Übertragungsraten zwischen 215 und 222 kB/s anzeigt.
Nun frage ich mich, ob ich einen Denkfehler habe, meine Lösung nicht funktionieren kann, oder ob die Jungs von MS einfach einen anderen Rechen-Algorythmus zur Ermittlung ihrer Übertragungsrate verwenden.
Wer weiß Rat?
Schon mal vielen Dank im Voraus
Bitscheucher
Beitrag wurde zuletzt am 29.05.09 um 00:05:53 editiert. |