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

Était-ce utile?

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
scroll top