Invoke

Un Thread ne peut pas executer directement une méthode d'un autre Thread, il faut passer par une invocation.

Exemple :

|Exemple Invoke
        void DoTask()
        {
            if (InvokeRequired)
            {
                BeginInvoke(new MethodInvoker(DoTask));
                return;
            }
            progressBar1.Value++;
        }

Invoke dans une méthode avec des paramètres

|Exemple Invoke
        void DoTask(string msg, int value)
        {
            if (InvokeRequired)
            {
                Invoke(new MethodInvoker(() => DoTask(msg, value)));
                return;
            }
            progressBar1.Value++;
        }