public static async Task ReadOutChannels(XmlTvReader reader, StreamWriter resultsFileStream) { var channels = reader.GetChannels().Distinct().ToList(); resultsFileStream.Write(EntityExtensions.GetHeader("Channels")); foreach (var channel in channels) { System.Console.WriteLine("Retrieved Channel: {0} - {1}", channel.Id, channel.DisplayName); resultsFileStream.Write(channel.GetChannelDetail()); } var totalProgrammeCount = 0; resultsFileStream.Write("\r\n"); foreach (var channel in channels) { System.Console.WriteLine("Processing Channel: {0}", channel.DisplayName); resultsFileStream.Write(EntityExtensions.GetHeader("Programs for " + channel.DisplayName)); var channelProgrammeCount = await ReadOutChannelProgrammes(reader, channel, resultsFileStream); totalProgrammeCount += channelProgrammeCount; await resultsFileStream.WriteLineAsync(String.Format("Total Programmes for {1}: {0}", channelProgrammeCount, channel.DisplayName)); } await resultsFileStream.WriteLineAsync(String.Format("Total Programmes: {0}", totalProgrammeCount)); }