Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Засечь время скачивания


Автор: salieri 17.04.17, 13:53
Доброго времени суток! Подскажите, пожалуйста, как мне время скачивания файла отследить. У меня задача следующая. Во время скачивания файла поставить счётчик (думаю, по таймеру) и засечь 10 секунд от начала до конца. Если за 10 сек. не удастся скачать (сайт висит и т.д...), перейти к скачиванию другого файла.

У меня проблема в том, что ф-я DownloadFile вешает программу полностью.

Возможно, есть какие-то другие, более простые варианты. Например, как-нибудь определить, есть ли вообще связь с сайтом. Как-нибудь.. GET или тому подобное.. ?

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Option Explicit
     
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
     
    Event ErrorDownload(FromPathName As String, ToPathName As String)
    Event DownloadComplete(FromPathName As String, ToPathName As String)
     
    Public Function DownloadFile(FromPathName As String, ToPathName As String) As LogVar
     
    If URLDownloadToFile(0, FromPathName, ToPathName, 0, 0) = 0 Then
     
    DownloadFile = 1
    RaiseEvent DownloadComplete(FromPathName, ToPathName)
    Else
     
    DownloadFile = 0
    RaiseEvent ErrorDownload(FromPathName, ToPathName)
    End If
     
    End Function

Автор: Akina 17.04.17, 16:20
URLDownloadToFile - синхронна. А callback Вы не определяете. так что Вы сами себе обрубили возможность прервать загрузку.

Используйте другие методы загрузки. Например, с помощью Internet Transfer Control.

Автор: salieri 18.04.17, 15:09
Akina, спасибо Вам огромное, разобрался!

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)