Это относительно просто: сделать его закрытым членом в классе, который выполняет доступ только для чтения к списку, возможно выставляя значения через других членов. Класс нужно держать под контролем, но это один фрагмент кода, на который нужно смотреть.

тся ли следующий псевдокод потокобезопасным?

IList<T> dataList = SomeNhibernateRepository.GetData();

Parallel.For(..i..)
{
    foreach(var item in dataList)
    {
       DoSomething(item);
    }
}

Список никогда не изменяется, он только повторяется и читается параллельно. Не писать в поля или что-то в этом роде.

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос