私の目標は
- それらが何かであるかどうかスレッドを確認します(初期化済み、生きている、オン、何でも)
- すべてのスレッドが開始されるまで、必要な数 (最大 5 まで) のスレッドを追加しない場合
count
すべてのスレッドが開始されている場合は、インを失うことなく再確認してくださいi-loop
- さらに、すべてのスレッドが同じサブを使用している場合に辞書からスレッドを削除する方法があるため、これは困難です
次のコードはすべてを示しています。AllOtherThreads サブルーチンは単純です。
Sub AllOtherThreads(ByVal i As Integer)
For z = 0 To 500
For q = 0 To 500
For w = 0 To 500
SomethingInvoked_Invoke(i, z, qt, wt)
Next
Next
Next
End Sub
メインコード
For i = 0 To 500
Recheck:
For izt = 0 To 2
If dictThread.Values(izt) Is Nothing Then
dictThread.Add("Thread" & izt.ToString, New Thread(New ParameterizedThreadStart(AddressOf AllOtherThreads)))
dictThread.Values(izt).Start(i)
GoTo nexti
ElseIf dictThread.Values(izt).IsAlive = False Then
dictThread.Remove(dictThread.Keys(izt))
次の行では、エラーが発生する場所ですThread is running or terminated; it cannot restart.
dictThread.Values(izt).Start(i)
GoTo nexti
End If
Next
System.Threading.Thread.Sleep(100)
GoTo Recheck
nexti:
Next