调用WebBrowser控件的Document 属性,代码如下:var document = _WebBrowser.Document;调用的时候抛出这样一个莫名其妙的异常” 指定的转换无效 “:
未处理 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: |
之前用着正常。于是查找最近修改的代码,终于找到原因:跨线程调用了(此代码段_WebBrowser.Document在另一个线程执行)。
简单来说,就是上面这个属性调用的时候不是主界面的线程,结果就报了那么一个莫名其妙的错误。
解决方法:将函数放在主线程调用。