In order to update a progress bar, you need to do the copy in a different thread - or the copy operation prevents the UI being updated.
The easiest way to handle that is to use a BackgroundWorker - it allows you to do the "meat" of the job in one thread, and provides events to show the progress:
BackgroundWorker Class (System.ComponentModel)[
^]