Domanda

Sto cercando un esempio di come eseguire le seguenti operazioni in VB.net con le estensioni parallele.

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

Il punto in cui mi sto bloccando è come passare all'attività il mio parametro InputValueforWork

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

Qualsiasi suggerimento e possibilmente un esempio di codifica sarebbe il benvenuto.

Andrew

È stato utile?

Soluzione

Ho risolto la mia domanda. devi passare un array con i valori.

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

Altri suggerimenti

Non necessariamente la risposta più utile che conosco, ma in C # potresti farlo con una chiusura:

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

Il vero problema qui è che VB 9 non supporta Action<T> , solo Funcs

Puoi aggirare questa limitazione avendo un helper in C #, in questo modo:

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

Quindi lo usi da VB in questo modo:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top