Просто любопытное наблюдение по теме Parallel.ForEach:
Если сохранить ObjectId объектов чертежа, а затем в параллельном цикле проверять id.IsNull и id.IsErased - все прекрасно работает.
НО! Как только добавляем проверку id.IsValid - цикл начинает колбасить. Причем ооочень странно колбасить. Ни ошибок, ни фаталов. Просто цикл выполняется не над всеми объектами списка. Иногда не выполняются инструкции находящиеся даже ДО проверки IsValid. Я вставил в тело процедуры несколько счетчиков и несколько раз видел парадоксальный результат - счетчик в самом начале процедуры "натикал" меньше, чем в конце, после всех условий. Этого вообще никак не может быть, но факт...
Вывод - структуры из API тоже могут лезть в чертеж в самые неожиданные моменты и вызывать самые неожиданные глюки.