When you say, "when debugging a certain thread, visual studio will just jump around randomly to different threads", do you mean that as you step through code on a particular thread you may hit a breakpoint on a different thread?
If so, you can use the Thread window to 'freeze' threads other than the one you're interested in debugging:
From http://msdn.microsoft.com/en-us/library/w15yf86f.aspx:
From the Threads window, you can set
the active thread. In addition, you
can freeze or thaw the execution of
each individual thread. Freezing
prevents the execution of a thread.
Thawing enables it to continue. Two
vertical blue bars identify a frozen
thread.
Support for this may depend on the version of Visual Studio you have (for example, I don't think the Express versions support the Thread window).