XMLHTTP.send в поток

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

XMLHTTP.send в поток

Сообщение BION » 06.01.2008 (Вс) 0:22

Така вот проблема: отправляю запрос через
Код: Выделить всё
XMLHTTP.send sQuery
все работает отлично, но, в случае нестабильности связи с серваком, этот самый send уходит в ожидание и соответственно вешает всю прогу. Я пытался выделить как-то ето дело в поток, придумать какойто таймаут, но стало только хуже - прога стала вылетать вообще.
В общем ХЗ че делать. Что посоветуете?

Хотя вот еще подумал навалять либу с потоками на ПБ и воткнуть все это туда, но сдаётся мне, что результат будет не лучше.

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 06.01.2008 (Вс) 0:45

Используй асинхронный вызов.

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 06.01.2008 (Вс) 1:05

Gloom писал(а):Используй асинхронный вызов.


ОК, пасиба.
Вот тока еще один вопрос, как к XmlHttp.onreadystatechange адресовать callback? addressof не катит.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 06.01.2008 (Вс) 8:38

Никак. Проверяй readystate в таймере.
Лучший способ понять что-то самому — объяснить это другому.

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 06.01.2008 (Вс) 16:48

Use the onReadyStateChange Property (Visual Basic)

In Visual Basic, you can use any of the following approaches to design applications that support onreadystatechange events.
    - Use a timer control to poll the readyState property. When the value of the readyState property indicates that the data is ready, turn the timer off.
    - Use a DomDocument object to load the XML and handle the state using the WithEvents keyword.
    Note
    If you are using the IXMLHTTPRequest and IServerXMLHTTPRequest components to first post your XML data to a Web server, this option will not work for you.
    - Create a wrapper class, and create a procedure to handle the event within the class module. Set the procedure to the default, and bind the class to the onreadystatechange event to either the IXMLHTTPRequest or IServerXMLHTTPRequest component, depending on which component you are using with your application.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 06.01.2008 (Вс) 18:24

По поводу класса

- Create a wrapper class, and create a procedure to handle the event within the class module. Set the procedure to the default, and bind the class to the onreadystatechange event to either the IXMLHTTPRequest or IServerXMLHTTPRequest component, depending on which component you are using with your application.


Можно сделать так - Создаёшь класс. В нём создаёшь XmlHttp приватный (или публичный если захочешь) объект и публичное Default свойствой или процедуру.

В коде вешаешь XmlHttp.onreadystatechange = Me

Таким образом асинхронный вызов будет валиться у тебя в эту процедуру.

Далее для большей асинхронности ( чтобы можно было сделать и сами запросы асинхронными ) добавляешь ID свойство в каждом классе и Event с параметром в который будут валиться обращения от всех классов. Дальше остаётся создавать эти классы пачками и запускать их на обращение к URL ресурсам.

P.S Прошу прощения за мой английский. Возможно написал очень коряво, поэтому вечерком выложу исходником. К сожалению на компе с которого пишу нету VB-ка

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 06.01.2008 (Вс) 18:27

А лучше всего юзать WinHttpRequest. Он события поддерживает :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2008 (Пн) 6:26

Он не только поддерживает события. У него ещё и раза в три больше методов и свойств.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 07.01.2008 (Пн) 11:40

Большое Спасибо, подружился с WinHTTP!
ALX_2002, я был бы рад взглянуть на те самые исходники о которых ты упомянул ранее.

Кстати, Всех с Рожаством!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.01.2008 (Пн) 15:14

ALX_2002
Понимаешь теперь, почему у меня была такая реакция (в асе)?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 67

    TopList