In one of my server application I have a class that look like,
class A
{
static int _value = 0;
void DoSomething()
{
// a request start here
_value = 0;
_value++;
// a request end here
}
// This method can be called many time during request
void SomeAsyncMethods()
{
_value++;
}
}
The problem is SomeAsyncMethods is async. Can be called many times. What I need when a request start set _value = 0 and then asynchrosnously increment this. After end of request I need the total. But the problem is that another request at the same time can access the class.
Best Answer
use
instead of
Interlocked.Increment
If multiple requests share this class and each one should get its own counter you need a non static counter that you pass to all threads working on this request.
Like this