2008-11-25 7 views
1

J'ai un contrôle WebBrowser sur ma page. Pour déclencher du javascript sur une page affichée dans le contrôle du navigateur, j'appelle this.myBrowser.Document.InvokeScript ("Test");Fusion de documents WebBrowser non valide

Cela fonctionne sur ma boîte de dev avec IE7, mais sur une machine de test séparé je reçois l'erreur suivante:

Exception Type: System.InvalidCastException 
Message: Specified cast is not valid. 
Source: System.Windows.Forms 
Stack Trace: 
    at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation() 
    at System.Windows.Forms.WebBrowser.get_Document() 
    at InteriorHealth.EmbeddedBrowser.frmMain.CardRead(String strData) in E:\Develop\TestProject\frmMain.cs:line 265 
    at MyTest.frmMain.prtCardReader_DataReceived(Object sender, SerialDataReceivedEventArgs e) in E:\Develop\TestProject\frmMain.cs:line 355 

La machine de test est en cours d'exécution IE6. Bien que je ne suis pas sûr, je spécule que la différence dans les versions d'IE peut être la raison de l'erreur. Est-ce que ça sonne bien? Comment est-ce que je travaille autour de ceci?

Ligne 265 de frmMain.cs est:

this.webKiosk.Document.InvokeScript(ConfigurationState.CardReader.Error.FireJavaScriptMethod); 

Ligne 355 de frmMain.cs est:

CardRead(strCardData_m); 

Je pense que l'exception est levée par l'appel de la propriété de document sur l'objet WebBrowser .

Répondre

8

Compris. Mon appel a été appelé à partir d'un événement de données de port série reçu, qui ne s'exécute pas sur le thread graphique principal. J'ai utilisé un appel de méthode this.Invoke() pour que mon code s'exécute sur le thread graphique principal, tout va bien maintenant!

+0

Merci pour cette réponse Jeremy =) J'ai juste eu le même problème, et la même solution =) – Ted