The following code
using System.Threading;
class Test
{
volatile int counter = 0;
public void Increment()
{
Interlocked.Increment(ref counter);
}
}
Raises the following compiler warning:
"A reference to a volatile field will not be treated as volatile"
Am I doing something wrong here to raise this warning? Why does the compiler me warn about this?
You are not doing anything wrong. According to the documentation:
A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.