我有一个List集合,我想在多线程应用程序中迭代它.我需要在每次迭代时保护它,因为它可以被更改,而且当我做foreach时我不希望"收集被修改"异常.
这样做的正确方法是什么?
每次访问或循环时都使用锁定.我很害怕死锁.也许我只是偏执使用锁而不应该.如果我走这条路以避免死锁,我需要知道什么?锁是否相当有效?
每次我执行foreach时,使用List <>.ToArray()复制到数组.这会导致性能下降,但很容易做到.我担心内存颠簸以及复制它的时间.看起来过分了.使用ToArray是否安全?
不要使用foreach而是使用for循环.每次我这样做以确保列表没有缩小时,我不需要进行长度检查吗?这看起来很烦人.