Here is an example class that makes reading and writing an enum property thread safe (when writing or reading the enum value)
/// <summary> /// A thread safe MyEnum. /// </summary> public class ThreadSafeMyEnum { // Volatile is not needed (esp. on x64 or x86) : // http://stackoverflow.com/questions/7177169/how-to-apply-interlocked-exchange-for-enum-types-in-c // http://stackoverflow.com/questions/425132/a-reference-to-a-volatile-field-will-not-be-treated-as-volatile-implications private int _enumAsInt; public MyEnum Value // added for convenience { get { return ( MyEnum ) Interlocked.CompareExchange( ref _enumAsInt, 0, 0 ); } set { Interlocked.Exchange( ref _enumAsInt, ( int ) value ); } } }
No comments:
Post a Comment