Multiple threads, so we need to have it protected (yes we could use lock), I tried ConcurrentDictionary directly, but I was having issues with its state between the different events.