Un Thread ne peut pas executer directement une méthode d'un autre Thread, il faut passer par une invocation.
Exemple :
void DoTask() { if (InvokeRequired) { BeginInvoke(new MethodInvoker(DoTask)); return; } progressBar1.Value++; }
Invoke dans une méthode avec des paramètres
void DoTask(string msg, int value) { if (InvokeRequired) { Invoke(new MethodInvoker(() => DoTask(msg, value))); return; } progressBar1.Value++; }