2008-11-07 8 views
1

Je cherche un exemple de la façon de faire ce qui suit dans VB.net avec des extensions parallèles.Passer des valeurs avec des extensions parallèles et VB.net

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

Là où je suis coincé est se sur la façon de passer dans la tâche de mon paramètre InputValueforWork

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

Tout suggère et peut-être un exemple de codage serait la bienvenue.

Andrew

Répondre

1

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) 
0

Pas nécessairement que je connais la réponse la plus utile, mais en C# vous pouvez le faire avec une fermeture:

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

Le vrai problème ici est que VB 9 doesn't support Action<T>, seulement 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 à partir de 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 
Questions connexes