Non ci sono varianti "moderne" o "classiche" del multithreading.
Spiegato a parole potrebbe anche essere corretto, ma quello che conta è l'implementazione.
Se chiami le funzioni di aggiornamento della Progress Bar e di elaborazione tutte sul thread esterno, quando sarà in esecuzione l'una si bloccherà l'altra, e viceversa. In pratica, così a prima vista, hai creato un thread esterno dove hai spostato i problemi che avevi sul primo thread principale.
E' chiaro che senza codice, come già detto, non si può dire molto.