很莫名其妙的exception message...

 

调用WebBrowser控件中的JS脚本使用这个函数来调用:

WebBrowser.Document.InvokeScript("函数名",参数列表);

但是下午遇到一个很棘手的问题,就是调用的时候会抛出这样一个莫名其妙的异常:

.NET 调用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:

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

原本是带参数的,以为是参数有问题,反复更改参数的类型和数目发现都不对,郁闷。后来发现不带参数都是一样错误的。

经过半个多小时的奋战后终于找到原因:跨线程调用了

简单来说,就是上面这个函数调用的时候不是主界面的线程(因为是函数回调),结果就报了那么一个莫名其妙的错误,真怨念。

解决方法:使用委托将函数放在主线程调用。

相关文章:

  • 2021-09-17
  • 2021-12-19
  • 2022-03-09
  • 2021-11-30
  • 2022-12-23
  • 2021-06-05
  • 2021-11-05
  • 2021-06-13
猜你喜欢
  • 2021-12-31
  • 2021-08-27
  • 2021-11-08
  • 2021-09-23
  • 2022-12-23
  • 2021-08-08
  • 2022-02-22
相关资源
相似解决方案