Vb.net System.InvalidCastException:&x27;指定的强制转换无效。';错误

Vb.net System.InvalidCastException:&x27;指定的强制转换无效。';错误,vb.net,Vb.net,我想把一些东西从一个带有HTML代码的文本框放到网页文本区 <input class="input-block-level" type="text" name="notification_address" id="notification_address" autocomplete="true" spellcheck="false" placeholder="Email Address" value=""> 只有当我在后台工作程序中执行代码时才会发生错误,如果我在“单击”按钮上执行

我想把一些东西从一个带有HTML代码的文本框放到网页文本区

<input class="input-block-level" type="text" name="notification_address" id="notification_address" autocomplete="true" spellcheck="false" placeholder="Email Address" value="">

只有当我在后台工作程序中执行代码时才会发生错误,如果我在“单击”按钮上执行此操作,代码将平稳运行。

这在许多级别上都是错误的。首先,正如文档中特别指出的,您永远不应该引用
DoWork
事件处理程序中的控件。该处理程序在辅助线程上执行,您只能安全地访问UI线程上的控件。其次,您不能调用
导航
并期望立即加载文档。您必须处理
DocumentCompleted
事件并访问那里的文档。有很多这样做的例子。从工作线程访问WebBrowser.Document属性很麻烦。它对它有一些支持,COM会自动封送对UI线程的调用。但并不是每个DOM对象都有使其工作的管道。这就是你得到冰的原因。没有任何东西真正需要您使用辅助线程。WebBrowser本身已经是多线程的,Navigate()调用只需很少的时间。但是,必须在DocumentCompleted事件处理程序中调用GetElementById(),加载DOM需要时间。
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
     Me.WebBrowser1.Navigate("website")
     WebBrowser1.Document.GetElementById("notification_address").SetAttribute("value", TextBox1.Text)
End Sub