I'm just guessing here, but I think that if you call both threads from the orginal thread (is it still clear?), you're attempting to complete two actions on the same thread, for this the first one that was created has to wait until the second one finishes... I think that's the issue... Why not put one thread inside the other or have two background workers, since it simplefies multithreading...

Just an idea