0

wir auf den üblichen Freitag Nachmittag Bug gestolpert ...IE 7 in winform App eingebettet ist, das Einfrieren der gesamten winform App

Wir haben eine .net 2.0 winform App haben, die das WebBrowser-Steuerelement (Einsatz auf XP Tablet Edition verwendet, mit dem neuesten IE 7). Irgendwann auf einer Seite verstecken wir ein div und setzen einen Textfeld-Wert mit etwas Javascript. An diesem Punkt funktioniert die Operation (Text erscheint in der Textbox), aber das komplette Fenster ist jetzt eingefroren. Das Minimieren/Maximieren des Fensters reagiert nicht, usw.: Es scheint, dass Windows-Nachrichten nicht mehr verarbeitet werden.

Wenn ich irgendwo außerhalb dieses Fensters (Taskleiste, ein anderes geöffnetes Fenster) klicke, funktioniert das zuvor eingefrorene Fenster jetzt richtig. Ich wiederhole die gleiche Operation, Verriegelung tritt wieder auf. Dies ist systematisch und kann jederzeit auf dieser Maschine reproduziert werden.

Wir können es nicht intern mit einer Vielzahl von Maschinen reproduzieren.

Auf der gleichen Maschine, wenn ich auf die gleiche Seite navigieren und die gleiche Operation direkt mit IE 7 ausführen, funktioniert alles gut ... sehr frustrierend.

Irgendeine Idee auf, was dieses Verhalten verursachen könnte? worauf sollte man achten? Anscheinend wird von der Seite kein JavaScript-Fehler ausgelöst.

Dank für alle Ideen oder Hinweise

Antwort

1

.NET 2.0 Web-Browser für Windows Forms ist fehlerhaft; In der Implementierung sind so viele verschiedene Fehler aufgetreten, einschließlich einiger Interop-Fehler, die zu einem Absturz von AccessViolationExceptions führen, dass wir uns jetzt vom eingebetteten IE entfernen und Mozilla verwenden.

Ich hasse es, ein Pessimist zu sein, aber die einbettbare IE-Kontrolle ist nur Müll.

Sie könnten in Mono.WebBrowser Kontrolle suchen. Gleiches verwaltetes Programmierinterface, ist aber mit der Gecko-Engine von Firefox und einer alternativen Implementierung mit der WebKit-Engine von Chrome und Safari implementiert.

Eine andere Alternative besteht darin, den .NET 2.0-WebBrowser-Wrapper zu überspringen und das ActiveX IE-Steuerelement direkt über mshtml-Schnittstellen zu verwenden. Leider gibt es im generierten mshtml Wrapper sogar ein paar Bugs.

Fazit: Ich würde Mono.WebBrowser empfehlen.

Verwandte Themen