using System.Threading.Tasks;
public static void Main()
int messagesPerTask = 20000;
var logger = new Logger();
var state = new StateObject();
Parallel.For(0, unitsOfWork, (tasknumber) =>
for (int i = 0; i < messagesPerTask; i++)
logger.Log("Message {0}" + i.ToString());
Console.WriteLine("{0} Expected", messagesPerTask * unitsOfWork);
Console.WriteLine("{0} Actual", Logger.TotalMessages);
public static int TotalMessages = 0;
public void Log(string message)