Страница: 1 | 2 |
Вопрос: Зависание во время выполнения запроса к узлу
Добавлено: 31.10.10 00:00
Автор вопроса: MYSTERIOR | Web-сайт:
Здравствуйте!
Есть программа которая по таймеру делает запрос к XML с узла в интернете используя MSXML30.dll
Проблема заключается в том, что пока ожидается ответ, видимо, программа подвисает. Не уверен что иэто во время запрова но скорее всего.
Вопрос: как сделать таймер асинхронным? То есть запустить функцию на исполнение и не ждать пока она закончится, а пережать управление всем компонентам вновь?
Ответы
Всего ответов: 27
Номер ответа: 1
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #1
Добавлено: 31.10.10 13:11
запускай мошню в другом потоке и всех делов
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 31.10.10 13:18
я так подозреваю, что речь идет не о .NET...
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 31.10.10 19:31
надо в вызове Open указать, что запрос асинхронный
Номер ответа: 4
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #4
Добавлено: 31.10.10 23:01
AgentFire, а как это реализовать? Может есть пример? Искал в гугле по запросу об асинхронности - не нашел
EROS, именно - VB6.0
Winand, а как это сделать? есть практическая реализация примера?
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 01.11.10 03:37
например
Номер ответа: 6
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #6
Добавлено: 01.11.10 10:28
AgentFire, а как это реализовать? Может есть пример?
Номер ответа: 7
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #7
Добавлено: 01.11.10 10:51
Winand, кажется получилось! Только вот чем теперь этот XML разобрать ( Раньше я использовал свойство xmlDoc.selectNodes и вытаскивал нужные мне данные, а MSXML2.ServerXMLHTTP такого не поддерживает...
AgentFire, кажется это для дот-нета, верно? Решил что надо образовываться - вот с утра ставлю NET 2010 - там говорят есть некий BackgroundWorker через который проблема задач в фоновом режиме решается максимально элегантно)
Номер ответа: 8
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #8
Добавлено: 01.11.10 11:10
Winand, сейчас проверил - все равно виснет зараза кажется во время выполнения запроса к узлу...
Номер ответа: 9
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #9
Добавлено: 01.11.10 14:02
Winand, вот код. Поставь на форму timer1 и text1 и попробуй постоянно небыстро перетаскивать форму. ПРи каждом срабатываении таймера форма будет на секунду "подвисать"! Как победить эту проблему? Замучатся весь, а из мультитрединга не работает XML почему то...
Номер ответа: 10
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #10
Добавлено: 01.11.10 14:25
Решил что надо образовываться - вот с утра ставлю NET 2010
Учитесь дотнету! там можно сделать так:
Номер ответа: 11
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #11
Добавлено: 01.11.10 14:57
AgentFire, нельзя дотнет( нужна совместимость( Что ж делать с этим залипанием дурацким?((
Winand, вот код. Поставь на форму timer1 и text1 и попробуй постоянно небыстро перетаскивать форму. ПРи каждом срабатываении таймера форма будет на секунду "подвисать"! Как победить эту проблему? Замучатся весь, а из мультитрединга не работает XML почему то...
1. Private Sub Timer1_Timer()
2. Dim xmlhttp As Object, timing As Long
3. Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP"
4. xmlhttp.open "GET", "http://nnm.ru", True
5. xmlhttp.send
6. While xmlhttp.readyState <> 4
7. xmlhttp.waitForResponse 1
8. timing = timing + 1
9. Caption = timing
10. DoEvents
11. Wend
12. Caption = timing & " done"
13. If xmlhttp.Status = 200 Then
14. Text1.Text = Text1.Text + Mid(xmlhttp.responseText, 1, 10) + vbCrLf
15. Else
16. MsgBox "status is " & xmlhttp.Status
17. End If
18. End Sub
Номер ответа: 12
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #12
Добавлено: 01.11.10 14:59
Всмысле вот код в читабельном виде - на всякий случай чтоб не потерялся в треде
Номер ответа: 13
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #13
Добавлено: 01.11.10 15:42
нельзя дотнет( нужна совместимость(
Номер ответа: 14
Автор ответа:
MYSTERIOR
ICQ: 227369659
Вопросов: 31
Ответов: 96
Web-сайт:
Профиль | | #14
Добавлено: 01.11.10 15:44
xp хотя бы без дотнетов
Номер ответа: 15
Автор ответа:
VbStarter
ICQ: 357911808
Вопросов: 118
Ответов: 1340
Web-сайт:
Профиль | | #15
Добавлено: 01.11.10 15:44
с машинами без фреймворка последнего-предпоследнего...