BlockingCollection<MyItem>
が通話から復帰するのに時間がかかりすぎるという問題があり.Take()
ます。
シナリオは次のとおりです。データを非常に高速にプッシュするスレッドがありますBlockingCollection
(実際には XUnit でfor
ループを実行しました。呼び出しTask
中に座っ.Take()
てアイテムが追加されるのを待っている 3 があります。出力から、ほぼ 200 個のアイテムが表示されます。 (最大 1 秒以上) 最初のTask
起床前にコレクションに追加され、実際に からデータを収集しますBlockingCollection
。
私は、パイプライン方式で編成された複数の「バッファ」を持っていますBlockingCollection
が、それらはすべて、アクションであまりにも多くの時間をかけて起きていることに苦しんでいます.Take()
。
私は試し.TryTake()
てみ.GetConsumingEnumerable()
ましたが、同じ結果でした。
このパイプラインの最後に、アイテムを 1 つずつ処理する 1 つのスレッドの遅い関数があり、1 つのアイテムを処理するのに不明な時間がかかる可能性があるという考え。「アイテム」が「バッファ」から「バッファ」に非常に速く渡されることを確認する必要があるだけです(最初の「バッファ」に挿入されるとすぐに)
アイテムがコレクションに追加された時間の近くで起動時間が発生することを確認する必要があり.Take()
ます。.TryTake()