My situation is this:
Multiple threads must write concurrently to the same collection (add and addrange). Order of items is not an issue.
When all threads have completed (join) and im back on my main thread, then I need to read all the collected data fast in a foreach style, where no actual locking is needed since all threads are done.
In the “old days” I would probably use a readerwriter lock for this on a List, but with the new concurrent collections I wonder if not there is a better alternative. I just can’t figure out which as most concurrent collections seem to assume that the reader is also on a concurrent thread.
You have not stated a requirement for a thread-safe collection at all. There’s no point in sharing a single collection since you never read at the same time you write. Nor does it matter that all writing happens to the same collection since order doesn’t matter. Nor should it matter since order would be random anyway.
So just give each thread its own collection to fill, no locking required. And iterate them one by one afterwards, no locking required.