Допустим, мы получили две нити работает, первый один собирается быть перечисляя список, что-то вродеЧто произойдет, если экземпляр списка будет заменен во время перечисления?
foreach(int a in someList)
{
//Do something
//Thread 2 comes in
}
, а затем нить 2 присваивает новый экземпляр «someList»
someList = new List<int>();
Question1 : Что будет с thread1? Изменит ли он исключение или продолжит перечисление старого экземпляра?
Вопрос2: Существует ли опасность того, что «старый» список получит мусор, собранный до завершения перечисления? Поскольку ничто не ссылается на этот старый список, кроме перечислителя.
Напишите код и начните тестирование? –