Pourquoi une variable locale est-elle accessible dans un autre thread créé dans la même classe?

Je ne pouvais pas vraiment trouver quelque chose sur ce sujet, donc merci de me diriger vers la bonne direction, si une question existe déjà.

De ce que j'ai appris .NET, il n'est pas possible d'accéder à des variables à travers les différents threads (corrigez-moi si cet énoncé est faux, c'est juste ce que j'ai lu quelque part).

Maintenant dans ce codesample, cependant, il semble donc qu'il ne devrait pas travailler:

class MyClass
{
    public int variable;

    internal MyClass()
    {
        Thread thread = new Thread(new ThreadStart(DoSomething));
        thread.IsBackground = true;
        thread.Start();
    }

    public void DoSomething()
    {
        variable = 0;
        for (int i = 0; i < 10; i++)
            variable++;

        MessageBox.Show(variable.ToString());
    }
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void SomeMethod();
    {
        MyClass mc = new MyClass();
    }
}

Quand je lance SomeMethod() ne le sont pas .NET lever une exception, parce que l'objet créé mc s'exécute dans un thread différent de celui créé au sein de la mc-initialiseur et ce nouveau thread est en train d'essayer d'accéder à la variable locale de mc?

La MessageBox montre 10 (non) prévu mais je ne suis pas sûr de savoir pourquoi cela devrait fonctionner.

Peut-être que je ne savais pas quoi chercher, mais pas de filetage-sujet que j'ai pu trouver, permettrait de répondre à cette question, mais peut-être que mon idée de variables et de threads est mauvais.

source d'informationauteur phil13131