Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WebBrowser.Navigator и поток


cruiser ©   (2009-01-21 20:31:00) 

Здравствуйте все! Подскажите, почему внутри отдельного потока не хочет работать функция WebBrowser.Navigate ? Выдается ошибка что не найдена страница или проверьте доступ к Интернет. При запуске в основном потоке программы все отрабатывает. Как сделать что бы всё работало корректно внутри потока? Delphi 2009, WinXP SP3 Pro
Вот код:
procedure TNewThread.Execute;
begin
form3.WebBrowser1.Navigate(' http://www.ya.ru');
end;

procedure TForm3.Button1Click(Sender: TObject);
var
 NewThread: TNewThread;
begin
 NewThread:=TNewThread.Create(true);
 NewThread.FreeOnTerminate:=true;
 NewThread.Priority:=tpLower;
 NewThread.Resume;
end;


cruiser   (2009-01-22 11:15:00) [1]

Это я понял. Мне нужно получить даже не гипертекст, а содержимое текстового файла на сервере. ya.ru приведен как пример. Попробовал idhttp.get - вроде работает как надо :) Спасибо всем за участие.


Сергей М.   (2009-01-22 09:21:00) [2]


> попробую idHttp - он вроде в потоке отрабатывает нормально


Так тебе нужно всего лишь получить гипертекст, безпоследующей необходимости интерпретировать его браузером ?
Тогда TWebBrowser - это как из пушки по воробьям.
К тому же TWebBrowser использует событийный механизм на основе оконных сообщений, а этого ты как раз и не учитываешь, пытаясь выполнить навигацию в доп.потоке.


cruiser   (2009-01-21 23:39:00) [3]

:) я привел только часть кода относящуюся к вопросу.
в потоке отрабатываются и другие действия. просто придется либо navigate использовать в основном потоке, что при определенных обстоятельствах приводит к подвисанию главной формы (нет доступа к ресурсу или нет соединения с интернет либо канал интернет слишком узкий), либо попробую idHttp - он вроде в потоке отрабатывает нормально.


Сергей М.   (2009-01-21 23:05:00) [4]


> cruiser ©   (21.01.09 21:49) [4]


Любопытно, что это за "этот случай" ?
И как это "navigate" НЕ"внутри потока" ?


cruiser   (2009-01-21 21:49:00) [5]

ВСё ясно. буду избавляться от использования navigate внутри потока в этом случае. спасибо.


Медвежонок Пятачок   (2009-01-21 20:46:00) [6]

не должно быть обращений к элементам UI из вторичных потоков.
вот это и есть по существу.


cruiser   (2009-01-21 20:43:00) [7]

Ну как и следовало ожидать - опять сарказм, присущий обывателям данного форума... :)
По сути сказать можете должно работать navigate в отдельном потоке или нет?


Медвежонок Пятачок   (2009-01-21 20:41:00) [8]

Как сделать что бы всё работало корректно внутри потока?

Никогда не создавать таких чудесных потоков.


Наверх

Титульная страница Поиск, карта сайта Написать письмо