For concurrent usage you should not use a Dictionary<TKey, TValue> but a ConcurrentDictionary<TKey, TValue> instead, and the GetOrAdd method.
Dictionary<TKey, TValue>
ConcurrentDictionary<TKey, TValue>
GetOrAdd