4

アプリにマルチスレッドを実装しようとしています。アプリは、変数を渡しながら、変数の数のスレッドを作成する必要があります。スレッドは簡単に作成できますが、すべてのスレッドを一度に停止できる方法を見つけようとしており、これらのスレッドのいずれかでエラーが発生した場合は、すべてを停止します。

私の現在の解決策は、ブール値が「True」であるかどうかをチェックするループで関数を囲むことです。その場合、スレッドは続行されます。エラーが発生した場合は、値を「False」に変更し、すべてのスレッドを停止します。同様に、スレッドを手動で停止したい場合は、関数から値を「false」に設定できます。

主な問題は、スレッドが完全に停止する前にループの最後に到達する必要があるため、これに対するより良い解決策はありますか?

4

3 に答える 3

2

while True ブロックでスレッドを実行しても問題ありません。false になったら、スレッドを反復処理して thread.abort() を呼び出すことができますが、abort を使用するのは得策ではない場合があります。スレッドのリストを使用すると役立つ場合があります。スレッドの作成方法はわかりませんが、これは理解しやすいはずです。

Dim listThreads As List(Of Threading.Thread)
'create/instantiate your threads adding them to the collection something like the following
For i = 1 To numberofthreadsyouneed
    Dim tempThread As Threading.Thread = New Threading.Thread
    tempThread.Start()
    tempThread.Add(tempThread)
next

while ブロックを使用する代わりに、Try catch を実行します。キャッチ内でリストを反復処理してスレッドを中止します

Catch ex As Exception
    For each Thread in listThreads
      Thread.Abort()
    Next
end Try
于 2013-07-24T18:01:18.943 に答える