首页新闻找找看学习计划

c# WebBrowser 下报错 尝试读取或写入受保护的内存。这通常指示其他内存已损坏

0
悬赏园豆:50 [待解决问题]

有这样一个需求,数据库表中主要字段为keyword,productID,利用keyword查找productID。

从数据库中读取数据后,利用线程把相同关键字的productID一起查找

void AA()

{

//查找数据库

for (int i = 0; i < keywordList.Count; i++)

Dictionary<int, object> keywordSearch = new Dictionary<int, object>();
                keywordSearch.Add(0, keywordList[i]);//关键字
                keywordSearch.Add(1, searchList[i].ProductIDList );                ParameterizedThreadStart parame = new ParameterizedThreadStart(GoSearch);
                Thread threadSearch = new Thread(parame);
                threadSearch.IsBackground = true;
                threadSearch.SetApartmentState(System.Threading.ApartmentState.STA);
                threadSearch.Start(keywordSearch);
                Thread.Sleep(10 * 1000);

 }

void GoSearch(  object  arrayDic)//productIDList为商品ID

{

Dictionary<int, object> dic = (Dictionary<int, object>)arrayDic;
 string keyWord = (string)dic[0];//关键字

Dictionary<decimal, string> productIDList =(Dictionary<decimal, string>)dic[1];//

string page="";//网址

WebBrowser web = new WebBrowser();

web.Navigate(page);

 int pageID = 1;//当前页

while(productIDList.Keys.Count > 0)

{

GC.Collect();

if (web.IsDisposed)
{
      productIDList.Clear();
       break;
}

while (web.ReadyState < WebBrowserReadyState.Complete)
                        Application.DoEvents();

//查找productID 

//如果找到productID,则从productIDList中删除

//查找下一页的链接,并返回下一页的页数

page="下一页的网址";

if (pageID > 100)//超出100页则停止
 {
      productIDList.Clear();
       web.Dispose();
        break;
 }

web.Navigate(page);

}

}

代码大概如上所示,但是现在出现问题,请问各位大侠,这个问题如何解决

Mars楚洋的主页 Mars楚洋 | 初学一级 | 园豆:111
提问于:2012-12-28 13:46
< >
分享
所有回答(4)
0

设断点测试一下

陀螺- | 园豆:74 (初学一级) | 2012-12-28 15:32
0

是多线程操作么.?

webborwser是winForm控件.所以非UI线程访问的话.会出问题的...

只会造轮子 | 园豆:2274 (老鸟四级) | 2012-12-28 16:09

有什么解决方法吗

支持(0) 反对(0) Mars楚洋 | 园豆:111 (初学一级) | 2012-12-28 17:04

@wjta168: http://www.cnblogs.com/jiangming/archive/2012/09/11/MultiThreadCallWebbrowser.html
我之前写的一个博客.里面有关于多线程访问webborwser的方法.

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2012-12-28 17:23
0

已解决了

Mars楚洋 | 园豆:111 (初学一级) | 2016-09-06 00:08

怎么解决的?我也遇到 这个问题,找不出原因,求解

支持(0) 反对(0) zhagan | 园豆:200 (初学一级) | 2016-10-09 16:12

请问您是怎么解决的 我也遇到此类的问题

支持(0) 反对(0) 马玉溁 | 园豆:27 (初学一级) | 2019-07-23 11:12
0

楼主怎么破求指教

望着天的蜗牛 | 园豆:315 (菜鸟二级) | 2017-11-02 10:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册