zoukankan      html  css  js  c++  java
  • .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:

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

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

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

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

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

    作者:一修先生
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    c#冒泡排序算法和快速排序算法
    sqlserver 索引
    varchar和Nvarchar区别
    trigger
    sql语句
    超实用压力测试工具-ab工具
    js 页面离开前触发事件
    C# websocket与html js实现文件发送与接收处理
    C# socket编程 使用fleck轻松实现对话 https://github.com/statianzo/Fleck
    C# socket编程 使用udp实现单对单的连接对话
  • 原文地址:https://www.cnblogs.com/1971ruru/p/2453227.html
Copyright © 2011-2022 走看看