Pregunta

Estoy buscando un ejemplo de cómo hacer lo siguiente en VB.net con extensiones paralelas.

Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)

Donde estoy atascado es cómo pasar a la tarea mi parámetro InputValueforWork

Dim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)

Cualquier sugerencia y posiblemente un ejemplo de codificación sería bienvenida.

Andrew

¿Fue útil?

Solución

Resolví mi propia pregunta. tienes que pasar una matriz con los valores.

Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)

Otros consejos

No es necesariamente la respuesta más útil que conozco, pero en C # podría hacer esto con un cierre:

var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )

El verdadero problema aquí es que VB 9 no es compatible con Action<T> , solo Funcs

Puede evitar esta limitación si tiene un ayudante en C #, como este:

public class VBHelpers {
    public static Action<T> FuncToAction<T>(Func<T, object> f) {
        return p => f(p);
    }
}

Luego lo usas desde VB así:

Public Sub DoSomething()
    Dim T As Task = Task.Create(VBHelpers.FuncToAction(Function(p) FunctionToDoWork(p)))
End Sub

Public Function FunctionToDoWork(ByVal e As Object) As Integer
    ' this does the real work
End Function
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top