So machen Sie eine statische Variable threadsicher

Ich habe diese statische Klasse, die eine statische Variable enthält (ein einfaches int). Ich habe eine implementiertlock() in demRun() Methode der Threads, damit keine anderen Threads gleichzeitig auf diese Klasse zugreifen können, aber die Variable wird immer noch verrückt und zeigt Duplikate, wahnsinnig hohe Werte usw. an.

Dies ist die Klasse:

public static class ExplorationManager
{
    public static int Counter = 0;

    public static void ExplorerMaker(List<int[]> validPaths, List<string> myParents, string[,] myExplorationMap, List<int[]> myPositions)
    {
        foreach (var thread in validPaths.Select
        (path => new Explorer(myParents, path, myExplorationMap, myPositions)).
        Select(explorer => new Thread(explorer.Explore)))
            {
                thread.Name = "Thread of " + Counter + " generation";
                Counter++; 
                thread.Start();
    }
}

}

Gibt es eine Möglichkeit, diese Variable threadsicherer zu machen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage