Обработка данных в нескольких BackgroundWorker - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Друзья, приветствую! Задача: есть коллекция, в которой хранятся артикулы товаров, есть процедура которая по артикулу ищет описание запчастей. Сейчас это работает последовательно, то есть запускают цикл и по очереди эти артикулы перебираются. Я хочу через BW сделать это асинхронно, для этого программно создаю несколько backgroundworkеров, но проблема в том, что я хочу создать, например 10 BW, а запчастей 200. Как сделать так чтобы программа запускала поиск артикулов по 10 артикулам , а следующие 10 запускались только, тогда когда BW освободятся? Я не хочу плодить 200 BW.

Решение задачи: «Обработка данных в нескольких BackgroundWorker»

textual
Листинг программы
Private Sub Parallel_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    ListBox1.DataSource = Nothing
    hMD5.Clear()
    howLong = Stopwatch.StartNew()
    Parallel.ForEach(kText, Sub(ss As String)
                                If ss.Length > 0 Then
                                    hMD5.Add(getMd5Hash(ss))
                                End If
                            End Sub)
    howLong.Stop()
    Label6.Text = howLong.ElapsedMilliseconds.ToString
    ListBox1.DataSource = hMD5
End Sub
Function getMd5Hash(ByVal input As String) As String
    Dim md5Hasher As MD5 = MD5.Create()
    Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input))
    Dim sBuilder As New StringBuilder()
    For i = 0 To data.Length - 1
        sBuilder.Append(data(i).ToString("x2"))
    Next i
    Return sBuilder.ToString()
End Function

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы