that's perfect. i'm pretty sure it's doing just what i want it to. here's an example of the code i'm using. you actually have to call the .join() after you've already started the thread.
Dim t1 As New System.Threading.Thread(AddressOf Function2)
t1.Start()
t1.Join()
Dim t2 As New System.Threading.Thread(AddressOf Function1)
t2.Start()
doing it this way, makes t2 wait until t1 has finished. i don't really know if i understand the Join() method because it says "Blocks the calling thread until a thread terminates." so you would think that in the above example, i would call the Join on t2 not t1.
oh well, this seems to work. thanks.