2011-03-30 87 views
1

我正在開發一個.NET 2.0 WinForms應用程序。它以前包括標準的Microsoft ActiveX WebBrowser控件,但我正在研究替代方法。.NET WebBrowser控件的替代品?

我需要做的:

  • 使用WebBrowser作爲應用標準的Web瀏覽器控件

  • 可以使用它在後臺too-例如,創建控制,渲染網頁並將結果輸出到圖像(使用.DrawToBitmap),而不將控件附加到表單上。

  • 鉤到在lifecycle-各種活動主要DocumentCompleted。

  • 網頁可以被加載(或重新加載)每隔30秒左右的時間,可以通過控制的新實例,或使用現有的控制。該應用程序可以保持長時間無限期地運行。

  • 必須使用.NET 2.0。沒有3.0+或WPF的東西。

只有三個控件,我已經能夠到目前爲止都具有阻止我前進,而關鍵問題:尋找

  • 微軟的ActiveX web瀏覽器 - 擁有龐大的內存泄漏,使它不適合長時間運行。

  • WebKit.NET - 據我已經能夠建立這個必須在任何渲染完成之前附加到窗體,使其對縮略圖生成片無用。也似乎遭受內存泄漏。

  • GeckoFX - 最適合我的,但不能正確支持線程(這是縮略圖生成管的關鍵)。

其他的選擇嗎?

+0

你說的「不正確地支持線程」是什麼意思,我認爲一些解決方法可以創建 – Andrey 2011-03-30 19:07:32

+0

有一個Xpcom.Initialize調用,只能在GeckoFX調用一次。從我已經能夠收集的內容中,一旦你在一個線程中調用該方法,GeckoWebBrowser控件就會被綁定到該線程 - 在任何其他線程中使用GeckoWebBrowser進行任何操作都會導致COM錯誤。 – MisterZimbu 2011-03-30 19:27:35

+1

作爲一種解決方法,您可以產生將封裝GeckoFX的進程 – Andrey 2011-03-30 19:30:25

回答

2

你可以嵌入WebKit.Net在多數民衆贊成所示的方式關閉屏幕的可視面積的形式?

您也可以看看Mono.WebKit或Mono.Mozilla,雖然我從來沒有使用過任何這些。

+0

我嘗試了一些像WebKit那樣的技巧,但無法讓它工作。並不意味着這是不可能的 - 我只玩了一兩個小時。儘管Mono圖書館的想法很有趣。我會玩這個,看看我能不能找到任何地方。 – MisterZimbu 2011-03-30 19:35:22