Как сделать статическую переменную потокобезопасной

У меня есть этот статический класс, который содержит статическую переменную (простое int). Я реализовалlock() вRun() метод потоков, поэтому никакие другие потоки не могут получить доступ к этому классу одновременно, но переменная все еще сходит с ума, показывая дубликаты, безумно высокие значения и т. д.

Это класс:

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

}

Есть ли способ сделать эту переменную «более» потокобезопасной?

Ответы на вопрос(6)

Ваш ответ на вопрос