Ajouter un contrôle sur un formulaire, à partir d'un autre Thread

J'étais en train d'essayer de retarder l'ajout de contrôles à mon formulaire principal, avec un objectif de vitesse, c'est l'heure de démarrage. Eh bien, je suis à court d'exception suivante:

Inter-threads non valide:
Contrôle 'Form1' accessible à partir d'un thread
autre que le thread qu'il a été créé
sur.

J'ai essayé de simplement le problème sur un petit exemple, mais le problème reste. Voici mon code:

using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace AddConrolFromAnotherThread {
    public partial class Form1 : Form {

        public Form1() {
            InitializeComponent();
        }


        private void AddButton() { 
            if(this.InvokeRequired){
                this.Invoke(new MethodInvoker(this.AddButton));
            }
            Random random = new Random(2);
            Thread.Sleep(20);
            Button button = new Button();
            button.Size = new Size(50,50);
            button.Location = 
                new Point(random.Next(this.Width),random.Next(this.Height));
                this.Controls.Add(button);
        }

        private void buttonStart_Click(object sender, EventArgs e) {
            Thread addControlThread = 
                new Thread(new ThreadStart(this.AddButton));
            addControlThread.Start();
        }
    }
}

J'ai utilisé la méthode Invoke et n'vérifier si InvokeRequiered est vrai, mais InvokeRequiered garder à rester "vrai". Je ne comprends vraiment pas cela. On pouvait au moins s'attendre à StackOverflow exception, puisque c'est une récursivité appel.

Donc, si quelqu'un a rencontré le même problème, s'il vous plaît pourriez-vous me dire ce que je n'ai fait de mal?

InformationsquelleAutor Gico | 2010-02-12