очереди заданий в threadpool vb.net - PullRequest
0 голосов
/ 19 июня 2011

У меня 20 000 элементов в очереди, и я хочу обработать их с помощью пула потоков. это будет лучший способ сделать это?

for i as integer = 0 to 19999
ThreadPool.QueueUserWorkItem (PerformTask, ListTask(i))
next

Sub PerformTask(i as string)
' do the work here
end sub

Как я могу вернуть или установить пользовательский элемент управления из подпрограммы PerformTask?

1 Ответ

2 голосов
/ 19 июня 2011

Вы не можете.

Однако вы можете выделить контейнер (массив, список) с различным интервалом для каждого результата и записать в него. В качестве альтернативы, вы можете передать объект в рабочий метод, который содержит и вход, и результат. Я бы использовал этот метод:

Class TaskObject
    Dim Input As String
    Dim Result As Whatever
End Class

Dim tasks As TaskObject() = New TaskObject(20000) { }

For i as Integer = 0 to tasks.Length - 1
    ThreadPool.QueueUserWorkItem(PerformTask, tasks(i))
next

Sub PerformTask(arg As Object)
    Dim task As TaskObject = DirectCast(arg, TaskObject)
    ' do the work here
end sub

Не связано: вы должны всегда включать Option Strict в своих проектах. Не исключение В вашем коде есть ошибки типа, которые должен обнаружить компилятор.

...