![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Rustemka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Здравствуйте. Имеем скаченную страницу на жестком диске (html).
Код dim fname as string Dim wb As New WebBrowser fname="c:\test.htm" wb.Navigate(fname) 'А теперь самое интересное. Пытаемся определить количество картинок в странице MsgBox((wb.Document.Images.Count)) 'и если закоментировать строку выше, то нифига не работает Dim j As Integer j = wb.Document.Images.Count Dim j1 As Integer For j1 = 0 To j - 1 msgbox = wb.Document.Images.Item(j1).OuterHtml.ToString next j1 Почему так работает код? Как заставить его нормально функционировать "не вызывая" вначале msgbox, методы debug.print и trace.write тоже не помогают. Почему то вначале нужно вызвать "сколько в документе images", msgbox покажет что ноль, а потом переменная j покажет реальное значение !!! Почему? Что за "косяк" у микрофоста в WebBrowser? |
|||
|
||||
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Сам ты косячешь мелкософтцы молодцы! Знаешь почему так? А все потому что страница еще не загружена, и ты пытаешься получить элементы рисунков(которых еще нет в документе). Избежать этого тебе поможет следующий код:
Теперь после каждого Navigate, ты получишь точную информацию об элементах в документе |
|||
|
||||
| DarkDragon |
|
||||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Еще можно через ReadyState(тогда не нужно устанавливать обработчик события Navigated):
просто добавляем цикл, который завершится после полной загрузки страницы.
Добавлено @ 11:21
А теперь и я косить начел |
||||
|
|||||
| Rustemka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Спасибо большое
1. А что в моем первом варианте делал Msgbox , почему он "помогал" и с ним работала программа? 2. И если wb.Navigate(fname) выделить в отдельный поток Thread, он будет "вешать" программу пока не загрузит страницу, или можно сделать много потоков и они Независимо будут загружать страницы (из интернета). Или надо запускать много программ одновременно? Жалко а то оперативную память. По 30 Мбайт каждый запуск потребляет! |
|||
|
||||
| DarkDragon |
|
||||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
MsgBox вызывается модальным способом (т. е. блакирует форму из которой он был вызван), в это время WebBrowser успешно загружает страницу, а после того как ты закроешь MsgBox, следом идет загрузка изображений, которые уже загрузились в Document.
Вряд ли можно запустить несколько потоков для одного wb, т. к. они все будут обращаться к одной и той же ф-ции, которая разбирает, загружает страницу в одно и то же место и выресовывает её на одну и ту же форму(контрол), и скорее всего получишь класную ошибку, или фигню какую нибудь. Так что грузи много програм, или вместе с потоками создавай столько же webbrowser'ов, и каждый из них пусть загружает свою страницу. Но странно для чего же тебе это надо? |
||||
|
|||||
| Rustemka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Картинки смотреть :-)
Думаешь в нескольких потоков несколько веб браузеров не будет тормозить? Если я сделаю и несколько окон, ну к примеру 5 потоков, и 5 окон нарисую? |
|||
|
||||
| DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Возможно будет! Это все уперается в: производительность твоего компа, производительность ОС (можно так забить ОС всяким хламом, что он будет туга работать, ну и не всегда хламом, вообщем сервисы, драйвера, реестр, и т. д.), интернет соединение, ну и как программа будет работать. Вроде же спокойно грузит IE в нескольких окошках. А ты в TabPage зделай Если будешь использовать потоки вместе с несколькими wb, используй метод обработки собыйтий (Navigated), это будет легче, и системизированней, нежели второго примера |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |