Voici une petite source qui montre comment indiquer dans une ProgressBar l'avancement d'une tache lourde effectuée dans un autre Thread que celui ayant créé la ProgressBar. Ici, la "tache lourde" correspond a la compression de fichiers, mais ce n'est pas le but de la source.
Cette question étant plus ou moins récurrente dans le forum, cette source illustre de façon utile l'utilisation de délégations synchrones/asynchrones comme expliqué dans ce tutorial :
http://www.csharpfr.com/tutoriaux/CSHARP-OPERATI ONS-CROSS-THREADS-UTILISATION-DELEGATIONS-SYNCHRON ES-ASYNCHRONES_174.aspx