2008-11-07 7 views
1

병렬 확장을 사용하여 VB.net에서 다음을 수행하는 방법에 대한 예제를 찾고 있습니다. 나는 갇히지있어병렬 확장 및 VB.net을 사용하여 값 전달

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

는 작업에 내 매개 변수 InputValueforWork

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

상관 제안하고 아마도 코딩 예제는 환영받을를 전달하는 방법이다.

앤드류

답변

1

나는 내 자신의 질문을 해결했습니다. 값을 가진 배열을 전달해야합니다.

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

반드시 그렇지는 내가 아는 가장 도움이 대답은하지만, C#에서 당신은 폐쇄와 함께이 작업을 수행 할 수 있습니다 :

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

여기 진짜 문제는 VB 9 doesn't support Action<T> 만 Funcs

다음과 같이 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 
관련 문제