C# winform(WebBrowser) 多线程问题
我要实现的功能是通过WebBrowser加载网页,然后解析这个网页的源码,并生成一个Html dom Tree 显示在TreeView控件上展现给用户。但是现在遇到问题: 一是遇到信息量大的网站解析比较慢,出现假死的情况;二是在解析生成树的过程中如果鼠标操作界面,就会卡死,希望得到大家的帮助。
下面是我实现这个功能的部分代码:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
return;
}
//如果页面加载完成 就执行网页解析操作
parserHtml();
}
//创建线程,进行网页解析并生成htmldomTree,然后domTree显示到界面上
pravate void parserHtml()
{
Thread thread = new Thread(new ThreadStart(createDomTree));
thread.Start();
}
private delegate void delegateUpdateTreeView(TreeNode treeNode);//委托
//实现网页的解析 和domTree的生成
void createDomTree()
{
TreeNode treeNode = parserHtmltoTree();//这个遇到信息量大的网站挺费时间
BeginInvoke(new delegateUpdateTreeView(delegateUpdateTreeViewImpl), treeNode);
}
//更新界面
void delegateUpdateTreeViewImpl(TreeNode treeNode)
{
this.TreeView1.Nodes.Add(treeNode);//把从网页中解析的信息以tree的形式显示到TreeView控件中
Application.DoEvents();
}
补充:界面假死或者卡死在控制台中打印如下异常信息:
A first chance exception of type 'System.UnauthorizedAccessException' occurred in (工程名称)*.exe。在网上找了一些方法,也没有得到解决。
希望得到大家的帮助!