public void DisplayTimeEvent(object source, ElapsedEventArgs e) { int returnValue = 0; if (!isThreading) { isThreading = true; int count = 0; int procnum = 0; foreach (WorkManager man in managers) { taskArray[count] = Task.Factory.StartNew(() => { returnValue += man.WorkCycle(procnum); }); //for thread affinity, which I never got to work quite right procnum++; count++; } Task.WaitAll(taskArray); glmanager.AllowRender(); OpCounter += returnValue; isThreading = false; } }