2

私の目標は

  • それらが何かであるかどうかスレッドを確認します(初期化済み、生きている、オン、何でも)
  • すべてのスレッドが開始されるまで、必要な数 (最大 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
4

1 に答える 1