Здравствуйте.
Интересует как правильно выполнять открытие объектов для чтения свойств без использования транзакций. Так как такой подход является в последнее время нерекомендуемым, информации по правильному использованию этой возможности не найти нигде.
В интернете есть примеры с использованием методов ObjectId.Open/Close и с использованием OpenCloseTransaction.
Вопросы по первому способу:
Встречал такие варианты:
1.
try
{
DBObject dbObj = objId.Open(OpenMode.ForRead);
// <как-то используем объект>
DBObject.Close();
DBObject.Dispose();
}
catch
{
// <Обработка исключения>
}
2.
using (DBObject dbObj = objId.Open(OpenMode.ForRead))
{
// <как-то используем объект>
}
Как наиболее правильно и безопасно применять?
Метод Open помечен как "нерекомендуемый", чем это может грозить?
По второму способу:
Нужно ли выполнять Commit для такой транзакции, если объекты не изменяются? Влияет ли это как-то на быстродействие? Какие есть ограничения применения? А ограничения какие-то должны быть, потому что, когда я просто изменил в своем коде Transaction на OpenCloseTransaction, а StartTransaction на StartOpenCloseTransaction, у меня программа стала вызывать фатальную ошибку в AutoCAD (Civil 3D - может это важно). Вернул все обратно - ошибка пропала. Причем в режиме отладки эта ошибка не отлавливается
В общем, буду благодарен за любую информацию по теме! Может быть, есть какие-то полезные статьи или материалы по этому вопросу?
Заранее спасибо!