列出<T>并发删除和添加

The*_*eAJ 13 .net c# concurrency list

我不太确定,所以我想我会问.删除和添加System.Collections.Generic.List<>对象的项是非线程安全的吗?

我的情况:

当收到连接时,它会被添加到列表中,但同时也会有一个正在删除死连接的工作人员等.

有问题吗?会lock吗?我也想知道我是否可以使用它的Foreach<>方法在列表对象上使用锁.

Guf*_*ffa 29

是的,在a中添加和删除项目List<>不是线程安全的,因此您需要同步访问权限,例如使用lock.

请注意,lock关键字不会锁定您用作标识符的对象,它只会阻止两个线程同时输入相同的代码块.您需要使用标识符相同的对象来访问访问列表的所有代码.