It is a bad idea to use a thread to refresh UI (even indirectly) without strong start/stop conditions and mutex. This is replaced a simple NSTimer in charge of updating the progress bar.