3

我有一个带有 TWebBrowser 组件的 Delphi 6 Pro 程序,该组件加载了一个嵌入 Cool Iris Wall 的网页。Cool Iris 墙是一个 SWF 对象,这意味着在运行时,执行发生在 Adob​​e Flash 播放器、ActiveX 或我相信的类似对象内。我遇到的问题是,有时当 Wall 从 Web 加载图片/视频时,它会对主 UI 线程上的 CPU 造成很大影响。我知道 TWebBrowser 将其大部分操作移至后台线程以保持主 UI 线程快乐,但 Adob​​e Flash Player 正在做的事情正在主 UI 线程上发生,这导致我的程序非常痛苦。有没有办法将 Adob​​e Flash Player 移动到后台线程?

[更新 - 2010 年 12 月 7 日] - 经过马拉松式的探测和调试会话后,发现问题与 Cool Iris Wall 的 Flickr 代理有关。您可以通过两种主要方式与 Wall 进行交互:1)您将特殊的 Flickr api 协议 URL 传递给他们,让他们为您与 Flickr 对话,例如“api://www.flickr.com/?search=puppy”加载墙与 Flickr 关键字搜索小狗的结果。这种方法的优点是它们为您完成了对 Flickr 进行查询和构建 Wall 内容所需的所有工作。2) 您自己构建一个包含照片流项目数据的 RSS 媒体提要,并将其提供给 Wall。

我正在使用技术#1。#1 的问题是,当他们的服务器无法为您构建 Flickr 提要时(无论出于何种未知原因),他们的主机 SWF 会给 CPU 带来沉重的负担,从而干扰主 UI 线程的操作。我将整个代码库转换为直接使用 Flickr API 并使用第二种技术自己创建提要,问题就消失了。

——罗施勒

4

1 回答 1

0

您无法控制网络浏览器如何管理其线程。如果您不希望 webbrowser 干扰主线程,请不要在主线程中运行 webbrowser。

于 2010-12-06T21:14:52.500 回答