2011-03-30 86 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