Установка блокировки в получателе CicApplication.BandEdgeCache не поможет вам, если он возвращает ссылку на коллекцию.
CicApplication.BandEdgeCache{
get{lock(_myCollection){return _myCollection;}}
}
возвращает ссылку, но имеет EXITED блокировку, как только она возвращается, поэтому использование функции Where () для ссылки на коллекцию, возвращаемую получателем, выполняется за пределами блокировки и не является потокобезопасным. Другой поток может с радостью изменить коллекцию, в то время как итерация Where выполняется, поскольку блокировка не удерживается - Даниэль прав, InvalidOperationException будет выдан, если другой поток изменяет коллекцию во время создания списка.
После создания списка можно изменить исходную коллекцию без ущерба для доступа к новому списку.