public static Task AddColorAsync(BlockingCollection <Info> input, BlockingCollection <Info> output) { return(Task.Factory.StartNew(() => { foreach (var item in input.GetConsumingEnumerable()) { if (item.Count > 40) { item.Color = "Red"; } else if (item.Count > 20) { item.Color = "Yellow"; } else { item.Color = "Green"; } output.Add(item); ColoredConsole.WriteLine($"stage 5: added color {item.Color} to {item}"); } output.CompleteAdding(); }, TaskCreationOptions.LongRunning)); }