Есть ли какое-то ограничение на количество одновременно открытых объектов?

Автор Тема: Есть ли какое-то ограничение на количество одновременно открытых объектов?  (Прочитано 18165 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Здравствуйте!
Словил новую проблему с обработкой объектов. Столкнулся с тем, что в какой-то рандомный момент обработка прерывается исключением AccesViolationException. AutoCAD "умирает" с фатальной ошибкой и даже в режиме отладки никакой подсказки о месте возникновения проблемы не удаётся получить. Опытным путём, методом исключения, установил, что проблема появляется в следующей операции. Взрываю объекты вертикального приложения (Civil 3D) и обрабатываю их в коде. Обработка:
  • определяется, надо ли полученный объект добавлять в чертёж
  • если надо - объект добавляется в модель
  • если не надо - объект уничтожается
Уже несколько раз переписал проблемный кусок, как мог сократил время, которое объекты держатся открытыми. Оптимизировал как мог, исключил ненужные открытия - всё равно проблема не ушла.
Всё осложняется тем, что при взрыве "осколки" получаются переопределённым методом Explode (TrensformOverrule). Этих осколков для сложных объектов может быть несколько сотен. Все объекты - новые, содержатся только в памяти, в чертёж не добавлены.
Может ли срабатывать какое-то ограничение по количеству одновременно открытых объектов в памяти?
Возможно ли какая-то некорректная работа DBObjectCollection, если в ней содержится несколько сотен объектов?

Отмечено как Решение Дмитрий Загорулькин 26-12-2019, 18:09:53

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Может ли срабатывать какое-то ограничение по количеству одновременно открытых объектов в памяти?
Возможно ли какая-то некорректная работа DBObjectCollection, если в ней содержится несколько сотен объектов?
Однозначно нет. Если бы речь шла о сотнях тысяч, миллионах открытых объектов, то еще можно было бы говорить об ограничениях.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Добавил вывод данных об объектах. Получаю примерно такой лог:
Start civil entity exploding: AeccDbGraphProfileNetworkPart <2078C>
Objects after explode: 5
Start prosessing for #1: AcDbLine
End prosessing for #1: AcDbLine
Start prosessing for #2: AcDbLine
End prosessing for #2: AcDbLine
Start prosessing for #3: AcDbLine
End prosessing for #3: AcDbLine
Start prosessing for #4: AcDbLine
End prosessing for #4: AcDbLine
Start prosessing for #5: AcDbLine
End prosessing for #5: AcDbLine
Start civil entity exploding: AeccDbGraphProfileNetworkPart <2078B>
Objects after explode: 9
Start prosessing for #1: AcDbHatch
End prosessing for #1: AcDbHatch
Start prosessing for #2: AcDbLine
End prosessing for #2: AcDbLine
Start prosessing for #3: AcDbLine
End prosessing for #3: AcDbLine
Start prosessing for #4: AcDbLine
End prosessing for #4: AcDbLine
Start prosessing for #5: AcDbLine
End prosessing for #5: AcDbLine
Start prosessing for #6: AcDbLine
End prosessing for #6: AcDbLine
Start prosessing for #7: AcDbLine
End prosessing for #7: AcDbLine
Start prosessing for #8: AcDbLine
End prosessing for #8: AcDbLine
Start prosessing for #9: AcDbLine
End prosessing for #9: AcDbLine
Start civil entity exploding: AeccDbGraphProfileNetworkPart <2078A>
Objects after explode: 9
Start prosessing for #1: AcDbHatch
End prosessing for #1: AcDbHatch
Start prosessing for #2: AcDbLine
End prosessing for #2: AcDbLine
Start prosessing for #3: AcDbLine
End prosessing for #3: AcDbLine
Start prosessing for #4: AcDbLine
End prosessing for #4: AcDbLine
Start prosessing for #5: AcDbLine
End prosessing for #5: AcDbLine
Start prosessing for #6: AcDbLine
End prosessing for #6: AcDbLine
Start prosessing for #7: AcDbLine
End prosessing for #7: AcDbLine
Start prosessing for #8: AcDbLine
End prosessing for #8: AcDbLine
Start prosessing for #9: AcDbLine
End prosessing for #9: AcDbLine
Start civil entity exploding: AeccDbGraphProfileNetworkPart <20789>
Objects after explode: 5
Start prosessing for #1: AcDbLine
End prosessing for #1: AcDbLine
Start prosessing for #2: AcDbLine
End prosessing for #2: AcDbLine
Start prosessing for #3: AcDbLine
End prosessing for #3: AcDbLine
Start prosessing for #4: AcDbLine
End prosessing for #4: AcDbLine
Start prosessing for #5: AcDbLine
End prosessing for #5: AcDbLine
Start civil entity exploding: AeccDbVAlignment <20777>
Objects after explode: 1
Start prosessing for #1: AcDbPolyline
End prosessing for #1: AcDbPolyline
Start civil entity exploding: AeccDbVAlignment <20778>
Objects after explode: 1
Start prosessing for #1: AcDbPolyline
End prosessing for #1: AcDbPolyline
Start civil entity exploding: AeccDbGraphProfileNetworkPart <205B2>
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Objects after explode: 17
Start prosessing for #1: AcDbEllipse
End prosessing for #1: AcDbEllipse
Start prosessing for #2: AcDbEllipse
End prosessing for #2: AcDbEllipse
Start prosessing for #3: AcDbEllipse
End prosessing for #3: AcDbEllipse
Start prosessing for #4: AcDbEllipse
End prosessing for #4: AcDbEllipse
Start prosessing for #5: AcDbLine
End prosessing for #5: AcDbLine
Start prosessing for #6: AcDbLine
End prosessing for #6: AcDbLine
Start prosessing for #7: AcDbLine
End prosessing for #7: AcDbLine
Start prosessing for #8: AcDbLine
End prosessing for #8: AcDbLine
Start prosessing for #9: AcDbLine
End prosessing for #9: AcDbLine
Start prosessing for #10: AcDbEllipse
End prosessing for #10: AcDbEllipse
Start prosessing for #11: AcDbEllipse
End prosessing for #11: AcDbEllipse
Start prosessing for #12: AcDbLine
End prosessing for #12: AcDbLine
Start prosessing for #13: AcDbLine
End prosessing for #13: AcDbLine
Start prosessing for #14: AcDbLine
End prosessing for #14: AcDbLine
Start prosessing for #15: AcDbLine
End prosessing for #15: AcDbLine
Start prosessing for #16: AcDbLine
End prosessing for #16: AcDbLine
Start prosessing for #17: AcDbLine
End prosessing for #17: AcDbLine
Start civil entity exploding: AeccDbGraphProfile <2077A>
Objects after explode: 194
Start prosessing for #1: AcDbPolyline
End prosessing for #1: AcDbPolyline
Start prosessing for #2: AcDbLine
End prosessing for #2: AcDbLine
Start prosessing for #3: AcDbPolyline
End prosessing for #3: AcDbPolyline
Start prosessing for #4: AcDbHatch
End prosessing for #4: AcDbHatch
Start prosessing for #5: AcDbPolyline
End prosessing for #5: AcDbPolyline
Start prosessing for #6: AcDbLine
End prosessing for #6: AcDbLine
Start prosessing for #7: AcDbPolyline
End prosessing for #7: AcDbPolyline
Start prosessing for #8: AcDbHatch
End prosessing for #8: AcDbHatch
Start prosessing for #9: AcDbPolyline
End prosessing for #9: AcDbPolyline
Start prosessing for #10: AcDbLine
End prosessing for #10: AcDbLine
Start prosessing for #11: AcDbPolyline
End prosessing for #11: AcDbPolyline
Start prosessing for #12: AcDbHatch
End prosessing for #12: AcDbHatch
Start prosessing for #13: AcDbPolyline
End prosessing for #13: AcDbPolyline
Start prosessing for #14: AcDbLine
End prosessing for #14: AcDbLine
Start prosessing for #15: AcDbPolyline
End prosessing for #15: AcDbPolyline
Start prosessing for #16: AcDbHatch
End prosessing for #16: AcDbHatch
Start prosessing for #17: AcDbPolyline
End prosessing for #17: AcDbPolyline
Start prosessing for #18: AcDbLine
End prosessing for #18: AcDbLine
Start prosessing for #19: AcDbPolyline
End prosessing for #19: AcDbPolyline
Start prosessing for #20: AcDbHatch
End prosessing for #20: AcDbHatch
Start prosessing for #21: AcDbPolyline
End prosessing for #21: AcDbPolyline
Start prosessing for #22: AcDbLine
End prosessing for #22: AcDbLine
Start prosessing for #23: AcDbPolyline
End prosessing for #23: AcDbPolyline
Start prosessing for #24: AcDbHatch
End prosessing for #24: AcDbHatch
Start prosessing for #25: AcDbPolyline
End prosessing for #25: AcDbPolyline
Start prosessing for #26: AcDbLine
End prosessing for #26: AcDbLine
Start prosessing for #27: AcDbPolyline
End prosessing for #27: AcDbPolyline
Start prosessing for #28: AcDbHatch
End prosessing for #28: AcDbHatch
Start prosessing for #29: AcDbPolyline
End prosessing for #29: AcDbPolyline
Start prosessing for #30: AcDbLine
End prosessing for #30: AcDbLine
Start prosessing for #31: AcDbPolyline
End prosessing for #31: AcDbPolyline
Start prosessing for #32: AcDbHatch
End prosessing for #32: AcDbHatch
Start prosessing for #33: AcDbPolyline
End prosessing for #33: AcDbPolyline
Start prosessing for #34: AcDbLine
End prosessing for #34: AcDbLine
Start prosessing for #35: AcDbPolyline
End prosessing for #35: AcDbPolyline
Start prosessing for #36: AcDbHatch
End prosessing for #36: AcDbHatch
Start prosessing for #37: AcDbPolyline
End prosessing for #37: AcDbPolyline
Start prosessing for #38: AcDbLine
End prosessing for #38: AcDbLine
Start prosessing for #39: AcDbPolyline
End prosessing for #39: AcDbPolyline
Start prosessing for #40: AcDbHatch
End prosessing for #40: AcDbHatch
Start prosessing for #41: AcDbPolyline
End prosessing for #41: AcDbPolyline
Start prosessing for #42: AcDbLine
End prosessing for #42: AcDbLine
Start prosessing for #43: AcDbLine
End prosessing for #43: AcDbLine
Start prosessing for #44: AcDbLine
End prosessing for #44: AcDbLine
Start prosessing for #45: AcDbLine
End prosessing for #45: AcDbLine
Start prosessing for #46: AcDbLine
End prosessing for #46: AcDbLine
Start prosessing for #47: AcDbLine
End prosessing for #47: AcDbLine
Start prosessing for #48: AcDbLine
End prosessing for #48: AcDbLine
Start prosessing for #49: AcDbLine
End prosessing for #49: AcDbLine
Start prosessing for #50: AcDbLine
End prosessing for #50: AcDbLine
Start prosessing for #51: AcDbLine
End prosessing for #51: AcDbLine
Start prosessing for #52: AcDbLine
End prosessing for #52: AcDbLine
Start prosessing for #53: AcDbLine
End prosessing for #53: AcDbLine
Start prosessing for #54: AcDbLine
End prosessing for #54: AcDbLine
Start prosessing for #55: AcDbLine
End prosessing for #55: AcDbLine
Start prosessing for #56: AcDbLine
End prosessing for #56: AcDbLine
Start prosessing for #57: AcDbLine
End prosessing for #57: AcDbLine
Start prosessing for #58: AcDbLine
End prosessing for #58: AcDbLine
Start prosessing for #59: AcDbLine
End prosessing for #59: AcDbLine
Start prosessing for #60: AcDbLine
End prosessing for #60: AcDbLine
Start prosessing for #61: AcDbLine
End prosessing for #61: AcDbLine
Start prosessing for #62: AcDbLine
End prosessing for #62: AcDbLine
Start prosessing for #63: AcDbLine
End prosessing for #63: AcDbLine
Start prosessing for #64: AcDbLine
End prosessing for #64: AcDbLine
Start prosessing for #65: AcDbLine
End prosessing for #65: AcDbLine
Start prosessing for #66: AcDbLine
End prosessing for #66: AcDbLine
Start prosessing for #67: AcDbLine
End prosessing for #67: AcDbLine
Start prosessing for #68: AcDbLine
End prosessing for #68: AcDbLine
Start prosessing for #69: AcDbLine
End prosessing for #69: AcDbLine
Start prosessing for #70: AcDbLine
End prosessing for #70: AcDbLine
Start prosessing for #71: AcDbLine
End prosessing for #71: AcDbLine
Start prosessing for #72: AcDbLine
End prosessing for #72: AcDbLine
Start prosessing for #73: AcDbLine
End prosessing for #73: AcDbLine
Start prosessing for #74: AcDbLine
End prosessing for #74: AcDbLine
Start prosessing for #75: AcDbLine
End prosessing for #75: AcDbLine
Start prosessing for #76: AcDbLine
End prosessing for #76: AcDbLine
Start prosessing for #77: AcDbLine
End prosessing for #77: AcDbLine
Start prosessing for #78: AcDbLine
End prosessing for #78: AcDbLine
Start prosessing for #79: AcDbLine
End prosessing for #79: AcDbLine
Start prosessing for #80: AcDbLine
End prosessing for #80: AcDbLine
Start prosessing for #81: AcDbLine
End prosessing for #81: AcDbLine
Start prosessing for #82: AcDbLine
End prosessing for #82: AcDbLine
Start prosessing for #83: AcDbLine
End prosessing for #83: AcDbLine
Start prosessing for #84: AcDbLine
End prosessing for #84: AcDbLine
Start prosessing for #85: AcDbLine
End prosessing for #85: AcDbLine
Start prosessing for #86: AcDbLine
End prosessing for #86: AcDbLine
Start prosessing for #87: AcDbLine
End prosessing for #87: AcDbLine
Start prosessing for #88: AcDbLine
End prosessing for #88: AcDbLine
Start prosessing for #89: AcDbLine
End prosessing for #89: AcDbLine
Start prosessing for #90: AcDbLine
End prosessing for #90: AcDbLine
Start prosessing for #91: AcDbLine
End prosessing for #91: AcDbLine
Start prosessing for #92: AcDbLine
End prosessing for #92: AcDbLine
Start prosessing for #93: AcDbLine
End prosessing for #93: AcDbLine
Start prosessing for #94: AcDbLine
End prosessing for #94: AcDbLine
Start prosessing for #95: AcDbLine
End prosessing for #95: AcDbLine
Start prosessing for #96: AcDbLine
End prosessing for #96: AcDbLine
Start prosessing for #97: AcDbLine
End prosessing for #97: AcDbLine
Start prosessing for #98: AcDbLine
End prosessing for #98: AcDbLine
Start prosessing for #99: AcDbLine
End prosessing for #99: AcDbLine
Start prosessing for #100: AcDbLine
End prosessing for #100: AcDbLine
Start prosessing for #101: AcDbLine
End prosessing for #101: AcDbLine
Start prosessing for #102: AcDbLine
End prosessing for #102: AcDbLine
Start prosessing for #103: AcDbLine
End prosessing for #103: AcDbLine
Start prosessing for #104: AcDbLine
End prosessing for #104: AcDbLine
Start prosessing for #105: AcDbLine
End prosessing for #105: AcDbLine
Start prosessing for #106: AcDbLine
End prosessing for #106: AcDbLine
Start prosessing for #107: AcDbLine
End prosessing for #107: AcDbLine
Start prosessing for #108: AcDbLine
End prosessing for #108: AcDbLine
Start prosessing for #109: AcDbLine
End prosessing for #109: AcDbLine
Start prosessing for #110: AcDbLine
End prosessing for #110: AcDbLine
Start prosessing for #111: AcDbLine
End prosessing for #111: AcDbLine
Start prosessing for #112: AcDbLine
End prosessing for #112: AcDbLine
Start prosessing for #113: AcDbLine
End prosessing for #113: AcDbLine
Start prosessing for #114: AcDbLine
End prosessing for #114: AcDbLine
Start prosessing for #115: AcDbLine
End prosessing for #115: AcDbLine
Start prosessing for #116: AcDbLine
End prosessing for #116: AcDbLine
Start prosessing for #117: AcDbLine
End prosessing for #117: AcDbLine
Start prosessing for #118: AcDbLine
End prosessing for #118: AcDbLine
Start prosessing for #119: AcDbLine
End prosessing for #119: AcDbLine
Start prosessing for #120: AcDbLine
End prosessing for #120: AcDbLine
Start prosessing for #121: AcDbLine
End prosessing for #121: AcDbLine
Start prosessing for #122: AcDbLine
End prosessing for #122: AcDbLine
Start prosessing for #123: AcDbLine
End prosessing for #123: AcDbLine
Start prosessing for #124: AcDbLine
End prosessing for #124: AcDbLine
Start prosessing for #125: AcDbLine
End prosessing for #125: AcDbLine
Start prosessing for #126: AcDbLine
End prosessing for #126: AcDbLine
Start prosessing for #127: AcDbLine
End prosessing for #127: AcDbLine
Start prosessing for #128: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
End prosessing for #128: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Start prosessing for #129: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
End prosessing for #129: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Start prosessing for #130: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
End prosessing for #130: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Start prosessing for #131: AcDbLine
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Exception thrown: 'System.AccessViolationException' in Acdbmgd.dll
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
The thread 0x1768 has exited with code 0 (0x0).
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
The thread 0x3f94 has exited with code 0 (0x0).
The thread 0x2934 has exited with code 0 (0x0).
The thread 0x222c has exited with code 0 (0x0).
The thread 0x4fa0 has exited with code 0 (0x0).
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Hatch): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Polyline): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.MText): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
Forgot to call Dispose? (Autodesk.AutoCAD.DatabaseServices.Line): DisposableWrapper
The thread 0x53e4 has exited with code 0 (0x0).
The program '[8976] acad.exe' has exited with code 1 (0x1).
Конечно же, смущает обилие "Forgot to call Dispose". Но, вроде как, это некритично, если переопределяется Explode. Мы это как-то обсуждали уже: https://adn-cis.org/forum/index.php?topic=7036.0
Может это быть причиной сбоев в данном случае?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Может это быть причиной сбоев в данном случае?
Маловероятно. Но я бы предположил баг в AutoCAD... Или в другом месте программы...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Понял! Спасибо! Буду искать дальше...

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
AccesViolationException .... Может ли срабатывать какое-то ограничение по количеству одновременно открытых объектов в памяти?
встречал что-то подобное, когда использовал id.Open, заменял на tr.GetObject и все работало.
С причинами не разбирался. Мне показалось, что что-то не закрываю после id.Open и повторный вызов id.Open вызывает AccesViolationException.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Я уже несколько раз переписывал проблемный кусок.
- Заменил все Open на использование транзакции.
- Предположил, что некорректно обрабатываются объекты из-за того, что не добавлены в базу данных. Все объекты после взрыва добавляю в базу данных, независимо от того, нужны они мне или нет. Ненужные потом удаляю в конце работы команды.
- Предположил, что DBObjectCollection как-то внутри некорректно работает. Переписал таким образом, что DBObjectCollection сразу после взрыва передаёт объекты в обычный массив и больше не используется.
- Предположил, что есть проблема, если одна транзакция на всё слишком долго держит открытыми много объектов. Переписал так, что на каждое действие открывается новая транзакция, которая закрывается сразу после выполнения действия.
Ничего не помогло  :(
Сейчас в раздумьях: то ли оставить пока как есть - проблема возникает только в некоторых отдельных чертежах и не в 100% случаях. Либо что-то с этим ещё попробовать сделать. Но вот что именно - идей нет никаких.

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Я уже несколько раз переписывал проблемный кусок.
- Заменил все Open на использование транзакции.

Когда у меня возникла проблема были идеи, но я не стал их тогда проверять Transaction сработала:

1) нельзя вызывать id.Open, нужно сначала как-то проанализировать, не открыт ли он, потом закрыть объект и открыть вновь.

2) Если открываешь объект через id.Open на запись и обращаешься к свойствам, вызываешь методы, то это может спровоцировать открытие других объектов, например контура видового экрана, масштаба аннотации, блока у мультивыноски и т.д. и не обязательно id.close() первичного объекта закроет эти второстепенные объекты.

...но возможно это не те причины.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1) нельзя вызывать id.Open, нужно сначала как-то проанализировать, не открыт ли он, потом закрыть объект и открыть вновь.
id.Open не приведёт к Fatal Error даже если объект уже открыт - может быть просто обычный Exception.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
определяется, надо ли полученный объект добавлять в чертёж
если надо - объект добавляется в модель
если не надо - объект уничтожается


Попробуй  ничего не добавлять после разбивки.
Если ошибок не будет, посмотри список типов объектов, попробуй методом исключения найти вредный тип.

Если ошибки будут, то значит на этапе разбивки что-то вылетает, попробуй методом исключения вычислить что за объект.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Попробуй  ничего не добавлять после разбивки.
Если ошибок не будет, посмотри список типов объектов, попробуй методом исключения найти вредный тип.

Если ошибки будут, то значит на этапе разбивки что-то вылетает, попробуй методом исключения вычислить что за объект.
Да там настолько рандомно сыпется, что никакие стандартные подходы по отладке не работают. У меня уже куча разных данных - на каких объектах падает, их состояние в момент падения и тд и тп. Но суть в том, что в этом объёме информации нет никакой закономерности. Я знаю на чём именно падает - метод взрыва объектов Civil 3D и добавление этих объектов в БД чертежа. Я знаю что это за объекты - это либо вид профиля, либо метка трубы, либо метка колодца. При этом, для этих объектов переопределён моим кодом метод Explode через TransformOverrule. Это довольно сложная связка, поэтому, фик поймёшь где именно идёт сбой. И не "выдрать" сбойный метод из проекта для того чтобы тут как пример показать - очень сложной получится операция извлечения...

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Похоже, причина в криворукости... Обнаружил, что мой код работал с объектами, которые были созданы и добавлены в чертёж в рамках транзакции, но уже после того, как транзакция закрыта. Исправил - стало работать со стабильностью примерно 1 вылет на 10 успешных отработок. Завтра на свежую голову продолжу поиски - возможно, что где-то ещё есть такие "чудесные" решения...

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Всё-таки, видимо, что-то "внутри" работает не так.
Я заменил метод Explode на прямое получение примитивов у тех объектов, которые я переопределяю с помощью TransformOverrule. Вылеты практически исчезли.
Но изредка теперь вываливается новое исключение: eAtMaxReaders. То есть, объект открыт максимальное количество раз на чтение. Но, т.к. я теперь везде использую транзакции, это выглядит как-то странно. Причём, транзакции очень короткие - несколько действий и сразу коммит и закрытие.
Вот, например, место, в котором в последний раз выскочила eAtMaxReaders (строки 3-4):
Код - C# [Выбрать]
  1. using (Transaction tr = db.TransactionManager.StartTransaction())
  2. {
  3.     AcDb.Entity firstExplodeObj = tr.GetObject
  4.         (firstExplodeObjId, OpenMode.ForRead, false, true) as AcDb.Entity;
  5.  
  6.     // Если это блок
  7.     isAnonBlk = firstExplodeObj is BlockReference blkRef
  8.         // и это анонимный блок
  9.         && blkRef.Name.StartsWith("*U", StringComparison.OrdinalIgnoreCase);
  10.  
  11.     tr.Commit();
  12. }
  13.  

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот, например, место, в котором в последний раз выскочила eAtMaxReaders (строки 3-4):
Ну значит где-то в другом месте он уже открыт (и не закрыт) 255 раз. Вполне возможно что и в недрах AutoCAD (а скорее Civil 3D).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
using (Transaction tr = db.TransactionManager.StartTransaction())
{
    AcDb.Entity firstExplodeObj = tr.GetObject
        (firstExplodeObjId, OpenMode.ForRead, false, true) as AcDb.Entity;
 
    // Если это блок
    isAnonBlk = firstExplodeObj is BlockReference blkRef
        // и это анонимный блок
        && blkRef.Name.StartsWith("*U", StringComparison.OrdinalIgnoreCase);
 
    tr.Commit();
}
 

1. Стоит поискать объекты, которые вызывают вылеты при Explode.
Может не все, что содержится после Explode стоит добавлять в текущее пространство.

2. Код скорее всего кусок из реального кода? По куску несколько вопросов возникает: после  "as AcDb.Entity;" нужно проверять на null, т.к. нет гарантии, что это Entity.
...далее ты хочешь работать с BlockReference, но внешние ссылки это тоже BlockReference и Table унаследован от BlockReference  и кто знает, может в Civil имеются еще объекты унаследованные от BlockReference. Возможно они вызывают ошибки с Explode.

пару ссылок по eAtMaxReaders
https://forums.autodesk.com/t5/net/eatmaxreaders-on-database-insert-objects-not-being-closed/td-p/7574819
https://forums.autodesk.com/t5/objectarx/an-error-quot-eatmaxreaders-quot/td-p/312652?profile.language=ru

в первой ссылке возможно подсказка, внутри динамических блоков могут содержаться операции и параметры, можно посмотреть, что остается после explode динамических блоков.