【发布时间】:2020-07-05 22:20:09
【问题描述】:
private void Form1_Load(object sender, EventArgs e)
{
webbrowser.Navigate(url);
}
private async void buttonDownload_Click(object sender, EventArgs e)
{
await Task.Run(()=> {
MessageBox.Show(webBrowser.Document.GetElementsByTagName("body")[0].InnerHtml);
});
}
错误显示“指定的转换无效”我读过它,这是因为另一个线程不是 ui 线程,你知道一个简单而简短的方法来完成这项工作吗?
【问题讨论】:
-
删除任务。当文档完成时(即,当
DocumentCompleted被提升和webBrowser.ReadyState == WebBrowserReadyState.Complete时),您可以阅读webBrowser.Document.Body.InnerHtml。运行任务确实不是您想要的,此外,所有内容都已经存在。但是,请阅读此处的注释:How to get an HtmlElement value inside Frames/IFrames? -
与问题没有直接关系,但您可能会觉得这很有帮助:WebBrowser wait until page has been fully loaded
-
基本上我在文档完成时调用一个按钮的点击,然后按钮的动作将通过 ajax 显示新的 html 代码,我想得到那个响应,这个响应不能被处理DocumentCompleted 因为页面永远不会被 ajax 刷新,所以必须是使用 await.task.run 的东西,但它不起作用。
标签: c# async-await webbrowser-control