2010-12-06 50 views
3

我有一個Delphi6 Pro程序,它帶有一個TWebBrowser組件,用於加載嵌入Cool Iris Wall的網頁。 Cool Iris牆是一個SWF對象,意味着在運行時,執行發生在Adobe Flash播放器內,我相信這是一個ActiveX或類似的對象。我遇到的問題是,有時當Wall從Web上加載圖片/視頻時,它會在主UI線程上的CPU上受到重創。我知道TWebBrowser將其大部分操作轉移到後臺線程以保持主UI線程快樂,但Adobe Flash Player正在做的事情發生在主UI線程上,導致我的程序非常悲傷。有沒有辦法將Adobe Flash Player移動到後臺線程上?將Delphi TWebBrowser控件中的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媒體Feed,其中包含照片流項目數據並將其提供給牆壁。

我正在使用技術#1。第一個問題是,當他們的服務器無法爲您構建Flickr feed時(無論出於何種原因),其主機SWF會對CPU造成沉重負擔,干擾主UI線程的運行。我將整個代碼庫轉換爲直接使用Flickr API並使用第二種技術自己創建Feed,問題消失。

- roschler

+9

我真的不喜歡什麼時候人們downvote,但不要添加註釋來解釋原因。 – 2010-12-06 17:21:59

+0

那麼說安德烈亞斯+1! – Remko 2010-12-06 19:24:56

回答

0

您無法控制webbrowser如何管理其線程。如果您不希望網頁瀏覽器干擾主線程,則不要在主線程中運行網頁瀏覽器。

相關問題