I would suggest anyone dealing with a List<T>
in multi-threading scenarios to take look at Immutable Collections in particular the ImmutableArray.
I've found it very useful when you have:
Also can be useful when you need to implement some sort of transaction-like behavior (i.e. revert an insert/update/delete operation in case of fail)