私がやろうとしているのは、何らかのアクションを実行するアプリケーションを作成することです。最大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
親切に助けてください。
ありがとう