enum
型の変数に対して排他処理を行うため、Interlocked.Exchange
を使いたい場合、int
にキャストして格納します。
int _field;
public MyEnum Field
{
get => (MyEnum)_field;
set => Interlocked.Exchange(ref _field, (int)value);
}
尚、調べた限りでは、lock
よりも Interlocked.Exchange
ほうがコストが低いようです。