// Demonstrates the consumption end of the producer and consumer pattern. async Task ConsumeAsync(ISourceBlock <IMessage> source) { // Read from the source buffer until the source buffer has no // available output data. while (await source.OutputAvailableAsync()) { var data = source.Receive(); aggregateMessage.AddMessage(data); } }
public async void Execute() { Task task1 = Task.Run(() => { Task.Delay(300); bufferBlock.Post(new EmpMessage { Id = 1, Name = "Athar" }); }); Task task2 = Task.Run(() => { Task.Delay(300); bufferBlock.Post(new DeptMessage { Id = 1, Department = "Admin" }); }); Task task3 = Task.Run(() => { Task.Delay(300); bufferBlock.Post(new SalarMessage { Id = 1, Salary = 20000 }); }); Task task4 = Task.Run(() => { Task.Delay(300); bufferBlock.Post(new CompanyMessage { Id = 1, Name = "Nagarro", Location = "Gurgaon" }); }); Task task5 = Task.Run(() => { Task.Delay(300); bufferBlock.Post(new TownMessage { Id = 1, Country = "India" }); }); foreach (var message in bufferBlock.Receive()) { aggregateMessage.AddMessage(message); } Console.WriteLine(aggregateMessage.ToString()); }
public async void Execute() { //Task task1 = new Task(() => //{ // Thread.Sleep(300); // bufferBlock.SendAsync<EmpMessage>(new EmpMessage { Id = 1, Name = "Athar" }); //}); //Task task2 = Task.Run(() => //{ // Thread.Sleep(300); // bufferBlock.SendAsync<DeptMessage>(new DeptMessage { Id = 1, Department = "Admin" }); //}); Task taskComplete = Task.Run(async() => { for (int i = 0; i < 5; i++) { var message = await bufferBlock.ReceiveAsync(); aggregateMessage.AddMessage(message); } }); Parallel.Invoke(() => { Thread.Sleep(300); bufferBlock.SendAsync <EmpMessage>(new EmpMessage { Id = 1, Name = "Athar" }); }, () => { Thread.Sleep(300); bufferBlock.SendAsync <DeptMessage>(new DeptMessage { Id = 1, Department = "Admin" }); }); Task task3 = Task.Run(() => { Thread.Sleep(300); bufferBlock.SendAsync <SalarMessage>(new SalarMessage { Id = 1, Salary = 20000 }); }); Task task4 = Task.Run(() => { Thread.Sleep(300); bufferBlock.SendAsync <CompanyMessage>(new CompanyMessage { Id = 1, Name = "Nagarro", Location = "Gurgaon" }); }); Task task5 = Task.Run(() => { Thread.Sleep(300); bufferBlock.SendAsync <TownMessage>(new TownMessage { Id = 1, Country = "India" }); }); await taskComplete.ContinueWith(t => { Console.WriteLine(aggregateMessage.ToString()); }); }