.NET 調用JS:WebBrowser.Document.InvokeScript 方法拋出“指定的轉換無效”異常的原因


很莫名其妙的exception message...

 

調用WebBrowser控件中的JS腳本使用這個函數來調用:

WebBrowser.Document.InvokeScript("函數名",參數列表);

但是下午遇到一個很棘手的問題,就是調用的時候會拋出這樣一個莫名其妙的異常:

browser_crossthread_error

未處理 System.InvalidCastException
  Message="指定的轉換無效。"
  Source="System.Windows.Forms"
  StackTrace:
       在 System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()
       在 System.Windows.Forms.WebBrowser.get_Document()
       在 IPMessagerNet.UI.Controls.Chat.IEView.IETabPage.Commander_TextMessageReceived(Object sender, MessageEventArgs e)
       在 System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   InnerException:

囧……莫名~那個奇妙啊。

原本是帶參數的,以為是參數有問題,反復更改參數的類型和數目發現都不對,郁悶。后來發現不帶參數都是一樣錯誤的。

經過半個多小時的奮戰后終於找到原因:跨線程調用了

簡單來說,就是上面這個函數調用的時候不是主界面的線程(因為是函數回調),結果就報了那么一個莫名其妙的錯誤,真怨念。

解決方法:使用委托將函數放在主線程調用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM