public void ConsumeSyncFromMultipleThreads() { AsyncCollection <int> collection = new AsyncCollection <int>(); int t1Counter = 0; int t2Counter = 0; var t1 = Task.Run(() => { foreach (var item in collection.GetConsumingEnumerable()) { t1Counter++; } }); var t2 = Task.Run(() => { foreach (var item in collection.GetConsumingEnumerable()) { t2Counter++; } }); for (int i = 0; i < 1000; i++) { collection.Add(i); } collection.CompleteAdding(); t1.Wait(); t2.Wait(); Assert.IsTrue(t1Counter > 400); Assert.IsTrue(t2Counter > 400); }