I don't know how it works the first time. You are blocking the UI thread by looping till the worker thread completes. So your calls to PerformStep won't really get through till button_Click completes, by which time you're already done. I'd suggest that you update the progress bar from the worker thread (by using BeginInvoke/Invoke as this[^] article describes. Regards Senthil _____________________________ My Blog | My Articles | WinMacro