"指定的强制转换无效"错误

Joe*_*ani 2 c# browser winforms

我正在使用此代码来检查webBrowser1中的文本,尽管我收到错误"指定的强制转换无效".对string docText = webBrowser1.Document.Body.InnerText;.有什么想法吗?可能是因为我正在从另一个线程访问webBrowser吗?谢谢.

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    string docText = webBrowser1.Document.Body.InnerText;

    if (docText == "Hello")
    {
        MessageBox.Show("Alerted!");
    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    backgroundWorker1.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)

Enr*_*lio 5

事实上,异常可能是从不是主UI线程的线程访问WebBrowser.Document属性引起的.您可以通过在堆栈跟踪中查找以下行来验证:System.InvalidCastException

System.Windows.Forms.WebBrowser.get_Document()
上的System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()

如果是这种情况,请尝试将网页内容作为参数传递给后台线程:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    var docText = (string)e.Argument;
}

private void timer1_Tick(object sender, EventArgs e)
{
    var docText = webBrowser1.Document.Body.InnerText;
    backgroundWorker1.RunWorkerAsync(docText);
}
Run Code Online (Sandbox Code Playgroud)