Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать, что бы функция не тормозила? 
:(
    Опции темы
dima_mak
  Дата 23.11.2004, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Вот у меня есть функция:
Код

Private Function OpenURL(ByVal sUrl As String) As String
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
Dim i As Integer
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
DoEvents
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
For i = 0 To 100
DoEvents
Next i
Wend
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
OpenURL = sBuffer
End Function


когда я вызываю эту функцию у меня прога подвисает до окончания выполнения функции.(Хотя я добавил
Код

For i = 0 To 100
DoEvents
Next i

это не очень помогло.)
Что можно ещё сделать, так что бы я мог хотябы на кнопки в проге нажимать во время выполнения функции?

Это сообщение отредактировал(а) dima_mak - 23.11.2004, 20:04
PM MAIL   Вверх
cardinal
Дата 23.11.2004, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Код

Private Function OpenURL(ByVal sUrl As String) As String
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
Dim i As Integer
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
DoEvents
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
DoEvents
Wend
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
OpenURL = sBuffer
End Function



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
dima_mak
Дата 23.11.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



а какая разница? я же тоже самое сделал.............
PM MAIL   Вверх
cardinal
Дата 24.11.2004, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Ты DoEvents в цикле делал, а он нафиг не нужен...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
dima_mak
Дата 24.11.2004, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Полюбе тормозит. Нету ничего другого, что можно сделать?
PM MAIL   Вверх
boevik
Дата 24.11.2004, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



dima_mak, или читай меньше байт за один раз или используй асинхроную функцию InternetReadFileEx.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
dima_mak
Дата 24.11.2004, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



smile (и желательно к обоим случаям) smile
PM MAIL   Вверх
boevik
Дата 24.11.2004, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



dima_mak, ты знаешь на какой функции у тебя тормазит?
Если на InternetReadFile, то возьми sReadBuffer поменьше, к примеру 512 байт.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
dima_mak
Дата 24.11.2004, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Цитата(boevik @ 24.11.2004, 08:38)
dima_mak, ты знаешь на какой функции у тебя тормазит?
Если на InternetReadFile, то возьми sReadBuffer поменьше, к примеру 512 байт.

Если честно сказать, то не совсем знаю.
Попробую буфер поменять...........
Добавлено @ 08:48
А что ты там говорил про InternetReadFileEx, что это такое и куда её вснуть?
Добавлено @ 08:50
P.S Попробывал буфер ихменить, но это не очень помогло.
PM MAIL   Вверх
boevik
Дата 24.11.2004, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Для начало, неплохо бы выяснить, какая именно функция тебя тормазит.
И не плохо бы всё переделать на асинхронную работу.
Как, я не знаю.
Я использую контроль Microsoft Internet Control с методом Execute, он выполняется асинхронно и нет ни каких тормазов.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
dima_mak
Дата 24.11.2004, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Ок. Спасибо. Может кто то ещё подскажет.............
PM MAIL   Вверх
dima_mak
Дата 24.11.2004, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Что то я не врубаюсь....... Что такое Microsoft Internet Control это WebBrowser. Если да то у него нет Execute.

З.Ы. Врубился. Пробую.......

Это сообщение отредактировал(а) dima_mak - 24.11.2004, 15:43
PM MAIL   Вверх
boevik
Дата 24.11.2004, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Цитата(dima_mak @ 24.11.2004, 15:41)
Что то я не врубаюсь....... Что такое Microsoft Internet Control это WebBrowser. Если да то у него нет Execute.

З.Ы. Врубился. Пробую.......

Извини обманул.
Смотри Microsoft Iternet Transfer Control


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
dima_mak
Дата 24.11.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Вопрос отпал. Сделал через Microsoft Internet Control. Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.