Обработка данных в нескольких 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