ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Странные ошибки в компонентах
  #1  
Старый 10.11.2008, 13:55
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию Странные ошибки в компонентах

Довольно странные и специфически ошибка связанные с работой в потоке.


1) Webbrowser и потоки.
Если запустить поток в котором компоненту Webbrowser задастся переход на адрес.
пример
Код:
procedure Go(param:pointer);stdcall;
begin
 form1.WebBrowser1.Navigate('http://ya.ru');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 thId:dword;
begin
 thId:=CreateThread(nil,0,@go,nil,0,thId);
end;
выдает ошибку. Даже прога бывает падает. Причем проявилось тока на Win XP SP2 и SP3. НА Win 2003 - работает нормально.

2) аналогично предудущему через раз отображается inputbox вызываемый в потоке. Причем появляется сообщение типа, канвас не может быть отрисован.
Если через except обработать исключение и заного попробовать повторить операцию то получается. При этом такой глюк независимо от винды
 
Ответить с цитированием

  #2  
Старый 10.11.2008, 15:15
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

WebBrowser это ActiveX компонент, и следовательно работает очень специфично в потоках. Лучше всего его запускать только в главном потоке. А еще лучше - вообще не использовать.
 
Ответить с цитированием

  #3  
Старый 11.11.2008, 04:03
Dian
Участник форума
Регистрация: 02.09.2008
Сообщений: 101
Провел на форуме:
196792

Репутация: 37
По умолчанию

VCL это однопоточная библиотека.
Физически, её, конечно, можно дергать из других потоков, но результат будет обескураживающий.
Обращайся из главного потока, например, через Synchronize()
 
Ответить с цитированием

  #4  
Старый 11.11.2008, 10:09
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Вообще WB я юзал для того чтобы нормально отображать картинки независимо от формата их. bmp,jpg,gif,png Да и облегчает загрузку с удаленных серверов в плане если используется ssl
Но тутже проблема не только с WB но еще и с inputbox который основан тоже на vcl
Хотя на win2003 всё пашет. Так что дело не в многопоточности.
Проблема решена по простому - через посылку форме собственных сообщений и в обработчике стоят все действия.
 
Ответить с цитированием

  #5  
Старый 21.11.2008, 19:55
vid
Новичок
Регистрация: 16.08.2006
Сообщений: 20
Провел на форуме:
64398

Репутация: 8
По умолчанию

кури посты про синхронизацию - так как ты делаешь - делать низзя
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникающие ошибки Jimm DeaDevil ICQ 5 25.05.2008 02:27
Ошибка 404. Как удержать посетителя на сайте? Solide Snake Статьи 2 15.04.2008 23:06
Множественные уязвимости в Apple Macintosh OS X Mr. P.S. *nix 1 02.02.2008 17:53
Bsod экран смерти silveran Чужие Статьи 1 21.12.2005 22:34



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ