Мы можем определенно сказать, что вы должны синхронизировать доступ к двум словарям - поскольку никакие операции над словарями не задокументированы как поточно-ориентированные, и вы мутируете их из нескольких потоков.Некоторые подобные структуры do имеют примечания по безопасности потоков, но не Dictionary<TKey,TValue>
.
Нужно ли синхронизировать строки ... сложно, не в последнюю очередь потому, что вы не показываетеиспользование.Чтение и запись по ссылочным типам (string
) являются атомарными, а сами строки неизменяемы (по крайней мере, при обычном использовании).Однако, если вы выполняете несколько операций, которые принимают между собой неизменное значение, вам может потребоваться синхронизация на время выполнения составных операций.Кроме того, имейте в виду, что вы не можете просто lock (stValue)
, потому что при изменении stValue
два разных пути будут блокироваться для разных объектов .Вместо этого вам понадобится отдельное поле, которое существует только для блокировки и не зависит от значения.
Наконец, обратите внимание, что поля static
- когда такие изменяемые - часто бываютплохая идея.