public void Part1() { InitGrid(); // start in the middle IntCode intCode = new IntCode("Day11", Instructions); Robot robot = new Robot(intCode, Grid, 0); List <Task> tasks = new List <Task>(); // this block doesn't like to be put in a loop - channel sync crashes tasks.Add(Task.Run(() => { intCode.RunIntCode(); })); tasks.Add(Task.Run(() => { robot.Run(); })); Task.WaitAll(tasks.ToArray()); int rslt = robot.ChangeCount; Console.WriteLine("Part1 {0}", rslt); }