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);
}
}
正如你看到的有螺紋得到應用開始開始使用列表清單上執行一些操作,和相同的列表由主線程
當新線程的foreach循環內的代碼正在執行並且同時foreach循環也得到執行時,它會拋出錯誤,無法修改列表。
任何想法如何克服這個問題?
謝謝
您的代碼不修改列表,永遠......您的實際代碼在做什麼? – 2013-03-12 13:03:12
即使您未使用任何線程,如果您正在枚舉它,也無法修改該列表。 – Matten 2013-03-12 13:03:40
有評論//執行操作 – BreakHead 2013-03-12 13:04:05