我想在VB中運行多線程控制檯應用程序,並且正在進行線程交叉。基本上我想運行5個線程,讓他們不斷訪問一個隊列,處理並重復,直到沒有剩下任何東西。當所有線程都處理完畢後,我希望他們能夠做其他事情。我試圖使用SyncLock來阻止多線程訪問,但似乎沒有工作。任何幫助,將不勝感激!VB.Net中的線程安全
Dim iThread As Integer
Dim manualEvents(4) As ManualResetEvent
Sub Main()
For i = 0 To 4
manualEvents(i) = New ManualResetEvent(False)
ThreadPool.QueueUserWorkItem(AddressOf DoOne)
Next
For Each handle As WaitHandle In manualEvents
handle.WaitOne()
Next
' do other stuff
EndSub
Private Sub DoOne()
Dim lockObject As New Object()
SyncLock (lockObject)
If QueryQueue.DoOne() Then
DoOne()
Else
manualEvents(iThread).Set()
iThread = iThread + 1
End If
End SyncLock
End Sub
該解決方案將使事情線程安全的,但換來的,因爲所有的* *線程現在已經在排隊等候執行任何有用的工作......或與此有關的任何工作移除所有的並行性。 –