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 启动的应用程序上启动了线程,对列表执行一些操作,并且主线程使用相同的 List。
当新线程的 foreach 循环内的代码正在执行并且同时 foreach 循环也被执行时,它会抛出您无法修改列表的错误。
知道如何克服这个问题吗?
谢谢