Thread.Sleep() in theory should no stop your application from responding to other Threads, i.e. the main one. Where as Thread.Join(). Thread.Join() will ensure that a thread has terminated, in theory, blocking the call thread indefinatly, until the calling thread terminates.