Your problem is twofolde:
1- should not be sharing controls or variables between threads without looking at locking them first. You are technically in a Race Scenario at that point which can cause havoc.
2- The labels were created on the Main UI thread. In order to access them from within a thread, you have to Invoke the main thread to get at it, from within your sub threads... which, again, circumvent the whole point of threading since you're also using the labels to "globally store your variables".
But if you must, here's how to access the labels within your threads:
To execute code from within the thread or access elements:
this.Invoke(new MethodInvoker(delegate
{
//put UI thread code here.
//you can assign local variables values from the main thread in here as well. They are both accessible.
}));
To only extract the value of an object or property of an object (i inserted placeholders for you here, this call is not a literal call and you must adapt it to your needs):
TypeName yourvar = (TypeName)this.Invoke(new Func<TypeName>(() => UICode here as TypeName));
Hope this helps you!