평행 연장 및 vb.net을 사용한 값을 전달합니다
-
06-07-2019 - |
문제
평행 연장으로 VB.NET에서 다음을 수행하는 방법의 예를 찾고 있습니다.
Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)
내가 붙어있는 곳은 작업을 전달하는 방법에 있습니다.
Dim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)
제안과 코딩 예제는 환영받을 것입니다.
앤드류
해결책
나는 내 자신의 질문을 해결했다. 값이있는 배열로 전달해야합니다.
Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)
다른 팁
내가 아는 가장 유용한 대답은 아니지만 C#에서는 폐쇄를 통해이 작업을 수행 할 수 있습니다.
var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )
여기서 진짜 문제는 그 것입니다 VB 9는 지원하지 않습니다 Action<T>
, 만 기능 만
다음과 같이 C#에 도우미를두면이 제한 사항을 해결할 수 있습니다.
public class VBHelpers {
public static Action<T> FuncToAction<T>(Func<T, object> f) {
return p => f(p);
}
}
그런 다음 VB에서 다음과 같이 사용합니다.
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
제휴하지 않습니다 StackOverflow