I have an app that allows the user to click a button which starts a data migration process. The migration process takes a really long time. While it runs I need to show the user the status - progressbar, recs processed. What is the best way to do this? The only way I know to run this process without the form hanging (not responding) is to run it in a seperate thread. But then I have to talk back to the form to update the progress bar or lablels. should i start the process with thread.start(proc) and then raiseevents from the process that are handled in the form for updating the controls?