I like to beat dead horses! :)
The "lightest" way to increment the count from multiple threads is:
Interlocked.Increment(ref count);
But as others have pointed out: if you're doing it inside Parallel.ForEach
then you're probably doing something wrong.
I'm suspecting that for some reason you're using ForEach
but you need an index to the item you're processing (it will never work with Parallel.ForEach
). Am I close? Why do you need the count? What sort of VooDoo magic are you trying to do?
UPDATE:
You seem to be safe with the ConcurrentDictionary
if your key is the URI
and the value is TAnswer
. I don't see a problem as long as you don't try to use the count to reference elements in your collection.
Finally...
If you need a counter, then use the Parallel.For
loop... it safely increments the counter for you.