Переместить Flash Player в элементе управления Delphi TWebBrowser в фоновый поток? - PullRequest
3 голосов
/ 06 декабря 2010

У меня есть программа Delphi 6 Pro с компонентом TWebBrowser, который загружает веб-страницу со встроенной Cool Iris Wall. Cool Iris wall - это SWF-объект, который означает, что при запуске выполнение происходит внутри проигрывателя Adobe Flash, ActiveX или подобного объекта, как я полагаю. Проблема, с которой я сталкиваюсь, заключается в том, что иногда, когда Wall загружает изображения / видео из Интернета, это сильно влияет на процессор в основном потоке пользовательского интерфейса. Я знаю, что TWebBrowser переносит большинство своих операций в фоновый поток, чтобы поддерживать основной поток пользовательского интерфейса, но что-то, что делает Adobe Flash Player, происходит в основном потоке пользовательского интерфейса и вызывает у моей программы большое горе. Есть ли способ переместить Adobe Flash Player в фоновый поток?

[ОБНОВЛЕНИЕ - 7/7/2010] - После пробного марафона и отладки выясняется, что проблема связана с прокси-сервером Cool Iris Wall Flickr. Вы можете взаимодействовать со Стеной двумя основными способами: 1) Вы передаете им специальные URL-адреса протокола Flickr API и позволяете им общаться с Flickr, например, «api: //www.flickr.com/? Search = puppy» загружает Стена с результатами поиска по ключевым словам Flickr для щенка. Преимущество этого подхода состоит в том, что они выполняют всю работу за вас, необходимую для выполнения запроса к Flickr и создания содержимого стены. 2) Вы сами создаете RSS-ленту, содержащую данные об элементе фотопотока, и подаете их на Стену.

Я использовал технику № 1. Проблема с # 1 заключается в том, что когда их серверы испытывают проблемы с созданием фида Flickr для вас (по неизвестной причине), их SWF-хост создает большую нагрузку на ЦП, мешая работе основного потока пользовательского интерфейса. Я преобразовал всю свою кодовую базу для работы непосредственно с Flickr API и сам создал канал, используя второй метод, и проблема исчезла.

- Рошлер

1 Ответ

0 голосов
/ 07 декабря 2010

Вы не можете контролировать, как веб-браузер управляет своими потоками. Если вы не хотите, чтобы веб-браузер мешал основному потоку, не запускайте веб-браузер в основном потоке.

...