很莫名其妙的exception message...
調用WebBrowser控件中的JS腳本使用這個函數來調用:
WebBrowser.Document.InvokeScript("函數名",參數列表);
但是下午遇到一個很棘手的問題,就是調用的時候會拋出這樣一個莫名其妙的異常:
未處理 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: |
囧……莫名~那個奇妙啊。
原本是帶參數的,以為是參數有問題,反復更改參數的類型和數目發現都不對,郁悶。后來發現不帶參數都是一樣錯誤的。
經過半個多小時的奮戰后終於找到原因:跨線程調用了。
簡單來說,就是上面這個函數調用的時候不是主界面的線程(因為是函數回調),結果就報了那么一個莫名其妙的錯誤,真怨念。
解決方法:使用委托將函數放在主線程調用。