If you are using 2.0, look into the BackGroundWorker class. It is specifically built to handle situations like yours.
It basically takes off and does a long operation in a separate thread so your application can continue on. There are built in methods to "ReportProgress" back to the main application to you can update things like a progress bar.