Jak zrobić statyczną zmienną bezpieczną wątek

Mam tę klasę statyczną, która zawiera zmienną statyczną (prosta int). Zaimplementowałem alock() wRun() metoda wątków, więc żadne inne wątki nie mogą uzyskać dostępu do tej klasy jednocześnie, ale zmienna nadal oszalała, wyświetlając duplikaty, szalenie wysokie wartości itp.

To jest klasa:

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

}

Czy istnieje sposób na uczynienie tej zmiennej „bardziej” bezpieczną dla wątków?

questionAnswers(6)

yourAnswerToTheQuestion