Pergunta

Eu estou procurando um exemplo de como fazer o seguinte em VB.net com extensões paralelas.

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

Onde eu estou ficando preso é sobre como passar para a tarefa meu parâmetro InputValueforWork

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

Qualquer sugere e, possivelmente, um exemplo de codificação seria bem-vinda.

Andrew

Foi útil?

Solução

Eu resolvi a minha própria pergunta. você tem que passar em uma matriz com os valores.

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

Outras dicas

Não necessariamente a resposta mais útil que eu sei, mas em C # você poderia fazer isso com um fecho:

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

O verdadeiro problema aqui é que VB 9 não suporta Action<T> , apenas Funcs

Você pode contornar essa limitação, tendo um ajudante em C #, assim:

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

Em seguida, você usá-lo de VB assim:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top