Warum kann eine lokale variable zugegriffen werden, die in einem anderen thread erstellt in der gleichen Klasse?

Konnte ich nicht wirklich finden, alles, was auf genau dieses Thema, also bitte führe mich in Richtung die richtige Richtung, wenn eine Frage bereits vorhanden ist.

Von dem, was ich gelernt habe über .NET, es ist nicht möglich, den Zugriff auf Variablen in verschiedenen threads (bitte korrigiert mich falls diese Aussage falsch ist, ist es genau das, was ich irgendwo gelesen habe).

Nun in diesem codesample, aber es scheint dann, dass es nicht funktionieren sollte:

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();
    }
}

Wenn ich SomeMethod() sollte nicht .NET eine Ausnahme, weil das erstellte Objekt mc läuft in einem anderen thread als dem thread erstellt innerhalb der mc-Initialisierer und dieser neue thread versucht Zugriff auf die lokalen Variablen der mc?

Den MessageBox zeigt 10 wie (nicht) erwartet, aber ich bin nicht sicher, warum das funktionieren sollte.

Vielleicht ich wusste nicht, was Sie suchen, aber keine threading-Thema, die ich finden konnte, würde dieses Problem zu beheben, aber vielleicht ist meine Vorstellung von Variablen und threads ist falsch.

InformationsquelleAutor der Frage phil13131 | 2013-09-12

Schreibe einen Kommentar