Passage de valeurs avec Parallel Extensions et VB.net
-
06-07-2019 - |
Question
Je cherche un exemple de la procédure suivante dans VB.net avec extensions parallèles.
Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)
Ce qui me bloque, c'est comment passer à la tâche mon paramètre InputValueforWork
Dim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)
Toute suggestion et éventuellement un exemple de codage serait la bienvenue.
Andrew
La solution
J'ai résolu ma propre question. vous devez passer dans un tableau avec les valeurs.
Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)
Autres conseils
Ce n'est pas nécessairement la réponse la plus utile que je connaisse, mais en C #, vous pouvez le faire avec une fermeture:
var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )
Le vrai problème ici est que VB 9 ne prend pas en charge Action<T>
, uniquement les Funcs
Vous pouvez contourner cette limitation en ayant un assistant en C #, comme ceci:
public class VBHelpers {
public static Action<T> FuncToAction<T>(Func<T, object> f) {
return p => f(p);
}
}
Ensuite, vous l'utilisez depuis VB comme ceci:
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow