2012-07-11 1 views
0

내가하려는 것은 어떤 작업을 실행하는 응용 프로그램을 만드는 것입니다. 최대 10 개의 스레드가 실행되어야합니다.스레드 수를 이용한 스레딩은 매개 변수로 proc을 제한하고 실행합니다.

다음 코드는 제대로 작동합니다. "Somework"절차에 매개 변수를 보내야합니다. 어떻게해야합니까?

Module Module1 
    Sub Main() 
     Dim Task As New Action(AddressOf SomeWork) 

     dim I as integer 

     for i=1 to 20 
     If RunningThread < 10 Then 
      Task.BeginInvoke(AddressOf Callback, Nothing) 
      Threading.Interlocked.Increment(RunningThread) 
     Else 
      SyncLock (Lock) 
       tasks.Enqueue(Task) 
      End SyncLock 
     End If 
     next 

     Console.ReadLine() 
    End Sub 

    Private tasks As New Queue(Of action) 
    Private RunningThread As Integer 
    Private Lock As New Object 

    Dim I As Integer = 0 

    Private Sub SomeWork() 
     I += 1 
     Console.WriteLine(I & " doing some work - begin :: " & Now.ToString) 
     Threading.Thread.Sleep(10000) 
     Console.WriteLine(I & " doing some work - end :: " & Now.ToString) 
    End Sub 

    Private Sub Callback(ByVal o As Object) 
     If tasks.Count > 0 Then 
      Dim Task As Action 
      SyncLock (Lock) 
       Task = tasks.Dequeue 
      End SyncLock 
      Task.BeginInvoke(AddressOf Callback, Nothing) 
     Else 
      Threading.Interlocked.Decrement(RunningThread) 
     End If 
    End Sub 
End Module 

친절히 도움.

감사

답변

관련 문제