Если у меня есть
Dictionary<int, StreamReader> myDic = new Dictionary<int, StreamReader>
//Populate dictionary
Один поток выполняет
myDic[0] = new StreamReader(path);
Другой поток выполняет
myDic[1] = new StreamReader(otherpath)
Является ли этот поток безопасным, потому что фактический изменяемый элемент в словаре отличается от элемента в другом потоке или я получу InvalidOperationException: Коллекция была изменена