The sample project highlights differences between Dictionary<>, ConcurrentDictionary<> and using Dictionary<> in combination with a lock. Issues arise with these data structures in a multithreaded scenario when care is not taken when adding and updating entries. Namely, unpredictable results.