Use ConcurrentDictionary instead of double locking