문제

평행 연장으로 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top