public IEnumerable<Product> GetProducts() { lock (_products) { // Return new collection so callers can iterate independently on separate threads return _products.ToArray(); } }