HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Странные ошибки в компонентах
  #1  
Старый 10.11.2008, 13:55
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию Странные ошибки в компонентах

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


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,794
С нами: 12604706

Репутация: 0


По умолчанию

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

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

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

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

  #4  
Старый 11.11.2008, 10:09
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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

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

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

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



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникающие ошибки Jimm DeaDevil Skype, IRC, ICQ, Jabber и другие IM 5 25.05.2008 02:27



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


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




ANTICHAT ™ © 2001- Antichat Kft.