27

whats is the easiest way to make C# dictionary access thread safe? Preferably just using lock(object) but any other ideas welcome!

Patrick Hofman
  • 153,850
  • 22
  • 249
  • 325
Tom
  • 321
  • 1
  • 5
  • 7

1 Answers1

61

In .NET 4 you have the ConcurrentDictionary class.

If you need to use an older version of .NET, and want to write it yourself:

  • wrap a Dictionary as a private field in your class
  • use a separate private object lockObject
  • take a lock on that lockObject around every access to the dictionary
H H
  • 263,252
  • 30
  • 330
  • 514
  • 2
    Just wonder, why "use a seperate lock object"? – Thus Spoke Nomad Jul 24 '15 at 16:46
  • 7
    @MonoLightTech - a bit theoretical, but if code inside the Dictionary class itself or external code that needs to 'see' the collection also locks on it, you might have a deadlock. Use separation of concerns: the lockObject is for locking only. – H H Jul 24 '15 at 21:06