Если вы не пометили его как энергозависимый, он будет работать на компьютерах с одним процессором (из-за 32-битной атомарности), но не на компьютерах с несколькими процессорами, так как он будет хранить значение в своем встроенном кэше и не будет извлекать последнее значение, следовательно, вам нужно пометить с помощью Volatile. Это правда, что вам не нужно блокировать элементы, если их размер 32 бита, это просто изменение размера реестра и, следовательно, атомарное.
Здесь есть статья: www.yoda.arachsys.com / csharp / threads / volatility.shtml
Существует также нечто, называемое Домены синхронизации .
Домен синхронизации обеспечивает автоматическую синхронизацию потокового доступа к объектам декларативно. Этот класс был представлен как часть инфраструктуры, поддерживающей удаленное взаимодействие .NET. Разработчики, желающие указать, что класс должен иметь доступ к своим синхронизированным объектам, должны иметь класс, унаследованный от ContextBoundObject, и пометить его атрибутом SynchronizationAttribute следующим образом:
[Synchronization]
public class MyController : ContextBoundObject
{
/// All access to objects of this type will be intercepted
/// and a check will be performed that no other threads
/// are currently in this object's synchronization domain.
}
Дополнительную информацию о доменах синхронизации можно найти здесь: msdn.microsoft.com / en-us / magazine / dd569749.aspx