コレクションを任意の順序 (foreach) で列挙し、任意のスレッドからアイテムを追加/削除できる必要があります。
インデックスによる直接アクセスは必要ありません。
どのコレクションを使用しますか? 単なるリスト?その場合、追加/削除のみをロックする必要がありますか、それとも foreach もロックする必要がありますか?
次の操作を任意のスレッドで使用できるようにします。
foreach (var item in myCollection)
{
// myCollection can be returned in any order.
}
myCollection.Add(item)
var success = myCollection.Remove(item) // returns false if the item does not exist in myCollection