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