线程列表(列表)

时间:2016-10-25 15:17:16

标签: vb.net multithreading list

我有一个具有以下结构的列表对象

Dim urlMasterList As List(Of List(Of UrlObject) = AggregateUrls()

AggregateUrls返回由名为UrlValidator的函数使用的域定界URL列表。这里的任务是检查这些列表中的URL是否有效,如果没有将它们添加到已损坏的URL列表中。

目前,每个循环都有一个嵌套来处理这个列表列表

For Each hostDelimitedUrlList As List(Of UrlObject) In urlMasterList                    
    For Each entry As UrlObject In hostDelimitedUrlList
        If badUrls.Exists(Function(x) x.Url = entry.Url) Then 'badUrls is the master broken list
            badUrls.Add(entry)
        Else
            Try
                If Not UrlValidator(entry.Url) Then
                    badUrls.Add(entry)
                End If
            Catch ex As Exception
                badUrls.Add(entry)
            End Try
        End If
    Next
Next

我正在尝试找到一个很好的方法来对这个主列表进行线程化。我尝试了一个并行的foreach但是产生了一些奇怪的结果和重复的条目,即使将写入过程锁定到badUrls

此任务是否适合线程化,还是应该从不同角度处理?理想情况下,我认为方法如下:当一个完成抓取下一个资源并提供服务时,让主线程提供块(从主列表中的5个列表)到5个工作线程。我找不到任何类型的问题的示例或教程。

0 个答案:

没有答案