private static Thread thread;
private static List<object> items = new List<object>();
static Program()
{
thread = new Thread(() =>
{
foreach (var item in items)
{
item.Name = "ABC";
}
Thread.Sleep(3600);
});
thread.Start();
}
private static void Main(string[] args)
{
var item = items.Where(i => i.Name == "ABC").FirstOrDefault();
if(item != null)
{
items.Remove(item);
}
}
Как вы видите, в приложении, запущенном с использованием List, запускается поток, который выполняет некоторые операции в этом списке, а тот же список используется в основном потоке.Поделиться списком <T> между двумя потоками
, когда выполняется цикл внутри цикла foreach нового потока, и в то же время цикл foreach также выполняется, он выдает ошибку, которая не может изменить список.
Любая идея, как преодолеть проблему?
Благодаря
Ваш код не изменяет список, когда-либо ... что ваш фактический код делает? –
Вы не можете изменить список, если вы перечислите его, даже если вы не используете нити. – Matten
Существует комментарий // Выполнение операции по элементу – BreakHead