Следующий кусок кода асинхронно закачивает содержимое страницы (файла) в переменную:
- Код: Выделить всё
On Error Resume Next
Dim whr As New WinHttpRequest, TimeOut As Long
whr.Open "GET", "http://google.com", WINHTTP_FLAG_ASYNC
whr.Send
Do Until whr.StatusText = "OK" Or whr.StatusText = "Not Found"
DoEvents
Loop
If whr.StatusText = "OK" Then
Download = True: GetTo = whr.ResponseText
Else
Download = False: GetTo = ""
End If
Выдрано из функции и слегка видоизменено, но тем не менее в сути все так же. Дело в том, что цил do until отлично делает свое дело и когда whr.StatusText возвращается значение "OK", цикл благополучно завершается и переходит на стадию контрольной проверки статуса, так вот что странно - частенько ф-ции возвращается значение False, хоть ответ и "OK", причем при отладке строчки If whr.StatusText = "OK" And whr.ResponseText <> "" Then , мне показывается что, StatusText="OK" и ResponseText так же не пуст, после запуска же, функции возвращается значние True, то есть 100% точного результата можно добиться только при отладке, если же обходится без нее, то очень часто бывает ложный результат, то есть такое ощущение, что после того как в цикле программа "поняла", что ответ есть, до оператора if еще не доходит что, статус уже "OK" и он возвращает ложное значение. Также пробовал ставить после цикла Sleep 1000, но даже это не всегда помогает и иногда функция работает не правильно. Конечно же, это очень странно, и, мягко сказать, не слишком логично. Может кто-нибудь встречала с таким вот парадоксом и знает в чем же все-таки проблема и как узнавать 100% точный результат? Спасибо.