![]() |
Странные ошибки в компонентах
Довольно странные и специфически ошибка связанные с работой в потоке.
1) Webbrowser и потоки. Если запустить поток в котором компоненту Webbrowser задастся переход на адрес. пример Код:
procedure Go(param:pointer);stdcall;2) аналогично предудущему через раз отображается inputbox вызываемый в потоке. Причем появляется сообщение типа, канвас не может быть отрисован. Если через except обработать исключение и заного попробовать повторить операцию то получается. При этом такой глюк независимо от винды |
WebBrowser это ActiveX компонент, и следовательно работает очень специфично в потоках. Лучше всего его запускать только в главном потоке. А еще лучше - вообще не использовать.
|
VCL это однопоточная библиотека.
Физически, её, конечно, можно дергать из других потоков, но результат будет обескураживающий. Обращайся из главного потока, например, через Synchronize() |
Вообще WB я юзал для того чтобы нормально отображать картинки независимо от формата их. bmp,jpg,gif,png Да и облегчает загрузку с удаленных серверов в плане если используется ssl
Но тутже проблема не только с WB но еще и с inputbox который основан тоже на vcl Хотя на win2003 всё пашет. Так что дело не в многопоточности. Проблема решена по простому - через посылку форме собственных сообщений и в обработчике стоят все действия. |
кури посты про синхронизацию - так как ты делаешь - делать низзя ;)
|
| Время: 09:40 |