我们偶然发现了通常的星期五下午的虫子......
我们有一个.net 2.0 winform应用程序,它使用WebBrowser控件(部署在xp平板电脑版本,最新的IE 7)。在页面的某个时刻,我们隐藏div并使用一些javascript设置文本框值。此时,操作正在运行(文本显示在文本框中),但整个窗口现在已冻结。最小化/最大化窗口没有响应等:似乎Windows消息不再被处理。
如果我点击此窗口外的任何位置(任务栏,另一个打开的窗口),之前冻结的窗口现在正常工作。我重做相同的操作,再次发生锁定。这是系统的,可以随时在这台机器上重现。
我们无法使用各种机器在内部重现它。
在同一台机器上,如果我导航到同一页面并直接用IE 7执行相同的操作,一切正常......非常令人沮丧。
有什么可能导致这种行为的想法?要检查什么?显然页面不会引发任何javascript错误。
感谢任何想法或指示
答案 0 :(得分:1)
用于Windows窗体的.NET 2.0 WebBrowser存在问题;我们在实现中遇到了很多不同的错误,包括导致AccessViolationExceptions崩溃的一些互操作错误,我们现在正在远离嵌入式IE并使用Mozilla。
我讨厌成为一个悲观主义者,但可嵌入的IE控件只是垃圾。
您可能希望查看Mono.WebBrowser控件。相同的托管编程接口,但是使用来自Firefox的Gecko引擎和使用Chrome和Safari的WebKit引擎的替代实现。
另一种方法是跳过.NET 2.0 WebBrowser包装器并直接通过mshtml接口使用ActiveX IE控件。不幸的是,生成的mshtml包装器中甚至存在一些错误。
结论:我建议Mono.WebBrowser。