we experienced an InvalidOperationException while iterating over AssemblyReferences collection, because the collection was changed in a different thread. I was a bit irritated, because I saw that the collection inherits from SimpleSynchronizedCollection. Given the name, I assumed the collection was thread-safe. When I look at the code, I can see there are locks when changing the collection, but not while iterating over it. So you can safely change the collection from different threads, but not read from one thread and change it on a different thread.
Was this a design choice to improve the performance? In my opinion this defeats the whole purpose. If parallel read-access should be allowed, I would suggest you use ReaderWriterLockSlim instead of the default lock/monitor.
Best regards, Tobias Lingemann.