Как сделать статическую переменную потокобезопасной
У меня есть этот статический класс, который содержит статическую переменную (простое int). Я'мы реализовалиlock()
вRun()
метод потоков, поэтому никакие другие потоки не могут получить доступ к этому классу одновременно, но переменная все еще сходит с ума, отображая дубликаты, безумно высокие значения и т. д.
Это класс:}
public static class ExplorationManager
{
public static int Counter = 0;
public static void ExplorerMaker(List validPaths, List myParents, string[,] myExplorationMap, List 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();
}
}
Есть ли способ сделать эту переменную "Больше" потокобезопасный?