Yes, List<T> is fine to read from multiple threads concurrently, so long as nothing’s writing.
From the documentation:
A
List<T>can support multiple readers concurrently, as long as the collection is not modified.
EDIT: Note that your code doesn’t necessarily use List<T> – just an IList<T>. Do you know the type returned by GetData()? If you’re in control of GetData() you probably want to document that the list returned by it is thread-safe for reading, if it’s actually returning a List<T>.