using System.Threading.Tasks;
public static void Main()
public int ItemsProcessed { get; private set; }
public Task DoWorkAsync()
return Task.Factory.StartNew(() =>
for (int i = 0; i < 10000; i++)
var task1 = this.DoWorkAsync();
var task2 = this.DoWorkAsync();
Task.WaitAll(task1, task2);
Console.WriteLine("items processed: " + ItemsProcessed);