You haven't really given enough information but at a glance of your implementation i would probably just do one of these and not even bother with managing the threads myself.
void DoStuff()
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(DoStuff));
}
else {
}
}
void DoStuff()
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(delegate
{
}));
}
}