none
Como contar KBPS no DownloadFileAsyn ? RRS feed

  • Pergunta

  • Estrou criando um programa de download, e uso o DownloadFileAsyn para fazer o Download, o problema é que não sei como posso contar o KBPS no DownloadFileAsyn.
    sexta-feira, 28 de novembro de 2014 15:46

Todas as Respostas

  • Estrou criando um programa de download, e uso o DownloadFileAsyn para fazer o Download, o problema é que não sei como posso contar o KBPS no DownloadFileAsyn.

    Olá,

    Escrevi um protótipo aqui rapidinho, não cheguei a testar, mas é um esboço:

        Private WithEvents Client As New System.Net.WebClient()
        Public Sub BaixarArquivo(url As String, destino As String)
            Client.DownloadFileAsync(New Uri(url), destino)
        End Sub
    
        Private Sub Client_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles Client.DownloadFileCompleted
            MsgBox("O download terminou")
        End Sub
    
        Private Sub Client_DownloadProgressChanged(sender As Object, e As Net.DownloadProgressChangedEventArgs) Handles Client.DownloadProgressChanged
            Static lastUpdate As DateTime
            Static lastBytes As Long = 0
            If lastBytes = 0 Then
                lastUpdate = DateTime.Now
                lastBytes = e.BytesReceived
                Exit Sub
            End If
            Dim tempoDecorrido As TimeSpan = DateTime.Now - lastUpdate
            Dim diferencaBytes As Long = e.BytesReceived - lastBytes
    
            Dim bytesPorSegundo As Integer = diferencaBytes / tempoDecorrido.Seconds
            lastBytes = e.BytesReceived
            lastUpdate = DateTime.Now
    
            Dim kbps As Integer = bytesPorSegundo / 1000
    
            'A váriavel kbps contem a velocidade de download em KB/s...
        End Sub

    Espero ter ajudado.


    Herbert Lausmann

    sexta-feira, 28 de novembro de 2014 19:08
  • Estrou criando um programa de download, e uso o DownloadFileAsyn para fazer o Download, o problema é que não sei como posso contar o KBPS no DownloadFileAsyn.

    Olá,

    Escrevi um protótipo aqui rapidinho, não cheguei a testar, mas é um esboço:

        Private WithEvents Client As New System.Net.WebClient()
        Public Sub BaixarArquivo(url As String, destino As String)
            Client.DownloadFileAsync(New Uri(url), destino)
        End Sub
    
        Private Sub Client_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles Client.DownloadFileCompleted
            MsgBox("O download terminou")
        End Sub
    
        Private Sub Client_DownloadProgressChanged(sender As Object, e As Net.DownloadProgressChangedEventArgs) Handles Client.DownloadProgressChanged
            Static lastUpdate As DateTime
            Static lastBytes As Long = 0
            If lastBytes = 0 Then
                lastUpdate = DateTime.Now
                lastBytes = e.BytesReceived
                Exit Sub
            End If
            Dim tempoDecorrido As TimeSpan = DateTime.Now - lastUpdate
            Dim diferencaBytes As Long = e.BytesReceived - lastBytes
    
            Dim bytesPorSegundo As Integer = diferencaBytes / tempoDecorrido.Seconds
            lastBytes = e.BytesReceived
            lastUpdate = DateTime.Now
    
            Dim kbps As Integer = bytesPorSegundo / 1000
    
            'A váriavel kbps contem a velocidade de download em KB/s...
        End Sub

    Espero ter ajudado.


    Herbert Lausmann

    Funciona mais fica dando uma msg de erro e se eu usar o code "On Error Resume Next" na frente para não dar o erro para de funcionar, tem como me ajudar ?

    Da erro na linha > "Dim bytesPorSegundo As Integer = diferencaBytes / tempoDecorrido.Seconds"

    • Editado Rey Jhulyan sábado, 29 de novembro de 2014 00:38
    sábado, 29 de novembro de 2014 00:33
  • Qual a msg de erro?

    Herbert Lausmann

    sábado, 29 de novembro de 2014 18:55