Pasar valores con extensiones paralelas y VB.net
-
06-07-2019 - |
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
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