У меня есть перечисление, которое используется несколькими потоками:
public enum Action
{
Read,
Write,
None
}
Внутри класса у меня есть переменная типа Action:
public Action _action;
Это общая переменная, то есть она обновляется и читается из нескольких потоков.
Например, из одного потока я делаю:
_action = Action.Read
И из другого:
if (_action == Action.Read)
{
}
else if (_action == Action.Write)
{
}
else if (_Action == Action.None)
{
}
else
{
}
Поэтому я хотел бы использовать Interlock для обновления и/или чтения из разных потоков одновременно. Как я могу сделать это через свойство?
Я видел много сообщений, например ниже:
Как применить InterLocked.Exchange для типов Enum в C#?
Проблема здесь в том, что перечисление должно быть приведено к типу int, но я хотел бы сохранить перечисление без приведения. Является ли это возможным? Если да, не могли бы вы опубликовать какой-нибудь пример? Также возможно ли совместить volatile с блокировкой? Я имею в виду применение блокировки к изменчивому перечислению.