private void _GetWebSiteThumbnail()
{
WebBrowser wbWebBrowser = new WebBrowser();
wbWebBrowser.ScrollBarsEnabled = false;
wbWebBrowser.Navigated += new WebBrowserNavigatedEventHandler(wbWebBrowser_Navigated);
wbWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wbWebBrowser_DocumentCompleted);
wbWebBrowser.ScriptErrorsSuppressed = true;
wbWebBrowser.ClientSize = new Size(WebSiteThumbnail.intThumbnailWidth, WebSiteThumbnail.intThumbnailHeight);
wbWebBrowser.Navigate("http://" + this.strDomain);
long lgTimeout = intTimeout * 10000000; //设置超时时间,防止有些网站一直在加载,不完成
long tempTicks = DateTime.Now.Ticks;
while (wbWebBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
if ((DateTime.Now.Ticks - tempTicks) > lgTimeout)
{
wbWebBrowser_DocumentCompleted(wbWebBrowser, null);
break;
}
}
wbWebBrowser.Dispose();
blThumbnailCompleted = true;
}我想弄一个把网站首页保存成截图的功能.在网上找的代码,自己修改了一下.
主要的代码是上面这个,每个线程都会做上面的操作,创建一个WebBrowser对象,使用完之后释放.
现在的问题就是,如果是直接调用,或者是按顺序来调用的话,是正常的.
我开几个线程来做的话,执行过程中不定期地会出现错误提示:
AccessViolationException,尝试读取或写入受保护的内存。这通常指示其他内存已损坏.
错误在while (wbWebBrowser.ReadyState != WebBrowserReadyState.Complete)这一句上
请问这个可能是什么问题呢,这样的错误应该怎样来调试呢,每次出现问题时访问的网站都是不一样的,是随机出现的.
解决方案 »
- 请教一个datagridview里的combobox列的选择值获取的问题。。
- 强制类型转换和as运算符,区别在哪
- 将数据类型 varchar 转换为 numeric 时出错
- winform 无法显示界面
- 有点难度:关于mdi窗体中控件的dock问题。
- 问一下这个C#语法是什么意思
- 要拔出优盘,想在自己的软件中断开,而不是通过托盘中的"安全删除硬件"
- 好怪的错误!程序刚刚还是运行还是好的,而且没有任何改动,现在就出现这个错误,不知道是不是系统出了问题
- +++++如何创建一封带附件的EMAIL并打开?+++++
- 求助:请教大虾~~~
- double 如何设定有效位
- 怎么回事,不同的ID读卡器读出来的信息不一样?
一个线程中的webbrowser访问完网站完成,但发现已经有另外一个线程的webbrowser在做wbWebBrowser_DocumentCompleted事件中的操作,它就会等待?等处理完以后再触发这个事件?
在同步处理中用什么可以达到这个效果呢