コード例 #1
0
 // 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);
     }
 }
コード例 #2
0
            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());
            }
コード例 #3
0
            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());
                });
            }