.net中的线程问题

时间:2010-02-04 18:53:27

标签: .net vb.net

我试图实现一个多线程爬虫,它似乎正在同时获取一个列表或url而没有任何问题。 我测试了每一步,并让程序将所有html写入文本文件。 现在,程序的其余部分打算将每个html存储为字符串,并将其解析为该页面中的URL列表,然后将此列表写入数据库。 这是错误开始的地方: 首先,我已经锁定了解析过程,因为它首先导致错误,返回空列表,错误“属性评估失败” 现在我已经返回了列表但我无法将其写入数据库。

我的问题是,我是否需要锁定所有内容?为什么?我是否可以不允许所有线程同时解析并且每个线程都写入arraylist?这一切都会阻碍性能吗?

以下是我的一些代码示例; 首先调用go并解析一个url:

If Not String.IsNullOrEmpty(html) Then
            'get all links first

            links = parser.GetLinks(fromUrl, html)

然后写入数据库:

For Each link As String In links


          recordsAffected = _
                    Links_DBObj.insert_feedurls_link(link, feedlink, execError, connObj_Generic, commObj_Generic)

1 个答案:

答案 0 :(得分:1)

我会使用Synchronized Queue而不是使用ArrayList。每个阅读线程都可以在每个写入线程出队时排队。