Comment une nouvelle Forme d'être exécuté sur un autre thread en C#?

Je suis juste en train de lancer un nouveau thread à chaque fois qu'un clic sur un bouton de même se produit, ce qui devrait créer une nouvelle forme. J'ai essayé ceci dans l'événement click du bouton dans la MainForm:

private void button1_Click(object sender, EventArgs e)
{
    worker1 = new Thread(new ThreadStart(thread1));
    worker2 = new Thread(new ThreadStart(thread2));

    worker1.Start();
    worker2.Start();
}

private void thread1()
{
    SubForm s = new SubForm();
    s.Show();
}

private void thread2()
{
    SubForm s = new SubForm();
    s.Show();
}

Le code dans le sous-Formulaire à l'événement clic du bouton qui va comme ceci:

private void button1_Click(object sender, EventArgs e)
{
    int max;
    try
    {
        max = Convert.ToInt32(textBox1.Text);
    }
    catch
    {
        MessageBox.Show("Enter numbers", "ERROR");
        return;
    }

    progressBar1.Maximum = max;

    for ( long i = 0; i < max; i++)
    {
        progressBar1.Value = Convert.ToInt32(i);
    }          
}

Est-ce la bonne manière? Parce que j'essaie d'ouvrir deux formes indépendantes, des opérations dans un thread ne devrait pas affecter les autres fil.

Ou BackGroundworker est la solution à mettre en œuvre? Si oui, quelqu'un peut m'aider avec ça?

Je pensais que Windows applications n'ont qu'un seul GUI boucle d'événement par processus? Ainsi, tous les trucs de l'INTERFACE utilisateur doivent être faites dans le thread principal? (CMIIW)
J'ai eu cette idée aussi.
quel problème vous avez spécifiquement essaie de résoudre?
Il n'y a pas de "fil conducteur", et un thread peut s'exécuter sa propre boucle de message.
double possible de Pourquoi mon Fil de Résilier Immédiatement Après la présentation d'un Formulaire Windows? Aussi: stackoverflow.com/questions/2428530/... et stackoverflow.com/questions/3012795/...

OriginalL'auteur SLp | 2010-08-14