Am I right in thinking this is the correct use of a Concurrent Dictionary
private ConcurrentDictionary myDic = new ConcurrentDictionary
Yes, you are right.
That and the possibility to enumerate the dictionary on one thread while changing it on another thread are the only means of existence for that class.