C# では、BlockingCollection がバックグラウンド スレッドによってクリアされるまで待機することが可能かどうか疑問に思っています。時間がかかりすぎる場合はタイムアウトします。
現時点で私が持っている一時的なコードは、やや洗練されていないように思えます (いつから使用するのが良い習慣なのThread.Sleep
でしょうか?):
while (_blockingCollection.Count > 0 || !_blockingCollection.IsAddingCompleted)
{
Thread.Sleep(TimeSpan.FromMilliseconds(20));
// [extra code to break if it takes too long]
}