2012-07-11 73 views
0

我想要做的是創建一個應用程序執行某些操作。應該有最多10個線程在運行。線程數與線程數限制和執行過程參數

我有以下代碼,它工作正常。我需要發送一個參數給「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 

請幫忙。

感謝

回答