Судя по описанию, StartTransaction() следует использовать только тогда, когда четко контролируются все действия с объектом, а StartOpenCloseTransaction() можно использовать всегда и в любых случаях, т.е. второй вариант предпочтительнее.Скорее с точностью до наоборот. Т.е. OpenCloseTransaction требует от программиста повышенной внимательности. Нельзя открыть обобъект на запись если он уже открыт на чтение или запись, нельзя открыть объект более 255 раз и т.д.
А чем лучше открытие объекта напрямую - Open()? В описании он помечен, как "не рекомендуемый" и "устаревший".Он не "устаревший", а "Advanced Only". Требует еще большей внимательности, чем OpenCloseTransaction - ни в коем случае нельзя забыть вызвать Dispose/Close для объекта открытого через Open (или использовать using).
Не говорит ли это о том, что Автодеск может от этого метода отказаться в любой момент?Никогда. Это базовый метод. Без него ничего работать не будет.
ЦитироватьСудя по описанию, StartTransaction() следует использовать только тогда, когда четко контролируются все действия с объектом, а StartOpenCloseTransaction() можно использовать всегда и в любых случаях, т.е. второй вариант предпочтительнее.Скорее с точностью до наоборот. Т.е. OpenCloseTransaction требует от программиста повышенной внимательности. Нельзя открыть обобъект на запись если он уже открыт на чтение или запись, нельзя открыть объект более 255 раз и т.д.
Тем не менее, замена StartTransaction() на OpenCloseTransaction() неоднократно решала проблемы.В некоторых контекстах обычная транзакция недопустима.
Мне гораздо спокойнее действовать по схеме: открыл->прочитал и сохранил нужные данные в переменных -> закрыл, либо открыл -> изменил -> закрыл. Да, конечно, кода получается больше. Но это небольшая цена за бОльшую стабильность работы приложения.Это для неленивых программистов. :)