List<T> => SynchronizedCollection<T> SynchronizedCollection<T> : use lock statement in every access You should use one of the collections provided by the System.Collections.Concurrent namespace [When to Use a Thread-Safe Collection](http://msdn.microsoft.com/en-us/library/dd997373.aspx)