Seems like one possible solution is to use the Background worker.

See the 4th post down I think, the one with all the code. Most of it's comments though. It basically starts a new thread or something and begins a process.

Using background worker

It's in your toolbox, add it to the form (it's like a Timer in terms of it doesn't physically appear on the form).