想象一下,在下面的类中,一个线程获取IEnumerable对象并开始对元素进行迭代。在迭代过程中,另一个线程出现并通过Add-method向library_entries添加一个新条目。 “收集是否会被修改” - 在迭代中抛出异常?或者,锁会阻止添加元素直到迭代完成?或者既不?线程和IEnumerable; “Collection was Modified”-exception
谢谢!
public static class Library
{
private static List<string> library_entries = new List<string>(1000000);
public static void Add(string entry)
{
lock (library_entries)
library_entries.Add(entry);
}
public static IEnumerable<string> GetEntries()
{
return library_entries.Where(entry => !string.IsNullOrEmpty(entry));
}
}
你可以看看.net 4的并发集合来检查它们中的一个是否对你想要做的事情有用(我不确定你想要什么)。 – CodesInChaos