Всем доброго дня!
Столкнулся с такой проблемой. Перед закрытием пользовательской формы я убираю все подчеркивания в тексте (вызываю метод UnSelectItem).
Все это прекрасно работает, если до закрытия формы не вызывается другая команда.
Если же перед закрытием формы вызвать другую команду, то на операторе
Entity en = acTrans.GetObject(selPrevDocInf.ObjId, OpenMode.ForWrite) as Entity; возникает исключение
Autodesk.AutoCAD.Runtime.Exception: 'eLockViolation'
Вот код:
public static void UnSelectItem()
{
if (selPrevDocInf == null) return;
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.
MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
Entity en = acTrans.GetObject(selPrevDocInf.ObjId, OpenMode.ForWrite) as Entity;
if (selPrevDocInf.dt == DataType.DBText)
{
DBText dbText = (DBText)en;
dbText.TextString = selPrevDocInf.text;
}
acTrans.Commit();
}
selPrevDocInf = null;
}
[CommandMethod("NCS_HLINK", CommandFlags.UsePickSet)]
public static void CmdSetLink()
{
try
{
if (fCheckRefDialog != null) return;
}
catch (System.Exception e)
{
ShowMessage(e);
}
}
fCheckRefDialog - ссылка на пользовательскую форму.