データをリッスンして文字列の ConcurrentQueue にプッシュする 1 つのスレッドで実行されているクラスがあります。Enqueue を使用してデータを追加していますが、キューの長さが増加していることがわかるので、データが正しくキューに入れられていることがわかります。
次に、別のスレッドで実行されている別のクラスが、FIFO ベースで各データを取り出す必要があります。ただし、それは単に何もしません。キューからデータを取り出すループは次のとおりです。
Dim data As String = Nothing
While Globals.queueMessages.Count > 0
queueMessages.TryDequeue(data)
If (data IsNot Nothing) Then
Console.WriteLine(data)
Else
Console.WriteLine("Failed to dequeue")
End If
End While
Count() を使用してキュー内のアイテム数を確認するだけでなく、IsEmpty も試しました。同じ結果!?
C# での ConcurrentQueue の使用に関する記事はかなりあるようですが、VB.Net の例が見つからないため、少し行き詰まっています。
ヘルプ !
更新: While ... End While を Do ... ループでラップすると機能しますが、何も起こっていないときにスレッドが拘束されるため、おそらくお勧めできません。これを行うためのよりエレガントな方法はありますか?