Вы не можете.
Однако вы можете выделить контейнер (массив, список) с различным интервалом для каждого результата и записать в него. В качестве альтернативы, вы можете передать объект в рабочий метод, который содержит и вход, и результат. Я бы использовал этот метод:
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
в своих проектах. Не исключение В вашем коде есть ошибки типа, которые должен обнаружить компилятор.