Passar valores com extensões paralelas e VB.net
-
06-07-2019 - |
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
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