using System.Collections.Generic;
using System.Threading.Tasks;
public string Name { get; set; }
public class SendMeStuff {
public Func<List<Stuff>, Task> ReceivedHandler { get; set; }
public async Task DoIt() {
List<Stuff> stuff = new List<Stuff>();
stuff.Add(new Stuff{ Name = "Oranges" });
stuff.Add(new Stuff{ Name = "A Lamp" });
stuff.Add(new Stuff{ Name = "Chocolate" });
stuff.Add(new Stuff{ Name = "One million dollars!" });
stuff.Add(new Stuff{ Name = "Tea" });
await ReceivedHandler(stuff);
public static void Main()
Console.WriteLine("Create stuff maker ...");
var stuffMaker = new SendMeStuff();
stuffMaker.ReceivedHandler = async (d) => { await HandleStuff(d); };
Console.WriteLine("Get stuff ...");
private static async Task HandleStuff(List<Stuff> stuff) {
Console.WriteLine("The handler");
foreach(Stuff item in stuff) {
Console.WriteLine(item.Name);