1

データをリッスンして文字列の 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 ... ループでラップすると機能しますが、何も起こっていないときにスレッドが拘束されるため、おそらくお勧めできません。これを行うためのよりエレガントな方法はありますか?

4

1 に答える 1