Description of ConcurrentBag on MSDN is not clear:
Bags are useful for storing objects when ordering doesn\'t matter, and unlike sets, bags support duplicates. C
That looks fine to me. The way you're using it is thread-safe.
If you could return an IEnumerable, it could be made more efficient by not copying to a List when you're done.
IEnumerable
List