Почему возникает Exception: 'eLockViolation'

Автор Тема: Почему возникает Exception: 'eLockViolation'  (Прочитано 7201 раз)

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

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Всем доброго дня!
Столкнулся с такой проблемой. Перед закрытием пользовательской формы я убираю все подчеркивания в тексте (вызываю метод UnSelectItem).
Все это прекрасно работает, если до закрытия формы не вызывается другая команда.
Если же перед закрытием формы вызвать другую команду, то на операторе
Entity en = acTrans.GetObject(selPrevDocInf.ObjId, OpenMode.ForWrite) as Entity; возникает исключение
Autodesk.AutoCAD.Runtime.Exception: 'eLockViolation'
Вот код:
Код - C# [Выбрать]
  1.         public static void UnSelectItem()
  2.         {
  3.             if (selPrevDocInf == null) return;
  4.             Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.
  5.                 MdiActiveDocument;
  6.             Database acCurDb = acDoc.Database;
  7.             using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  8.             {
  9.                 Entity en = acTrans.GetObject(selPrevDocInf.ObjId, OpenMode.ForWrite) as Entity;
  10.                 if (selPrevDocInf.dt == DataType.DBText)
  11.                 {
  12.                     DBText dbText = (DBText)en;
  13.                     dbText.TextString = selPrevDocInf.text;
  14.                 }
  15.                 acTrans.Commit();
  16.             }
  17.             selPrevDocInf = null;
  18.         }
  19.  
  20.         [CommandMethod("NCS_HLINK", CommandFlags.UsePickSet)]
  21.         public static void CmdSetLink()
  22.         {
  23.             try
  24.             {
  25.                  if (fCheckRefDialog != null) return;
  26.             }
  27.             catch (System.Exception e)
  28.             {
  29.                 ShowMessage(e);
  30.             }
  31.         }
  32.  

fCheckRefDialog - ссылка на пользовательскую форму.
« Последнее редактирование: 17-02-2021, 16:02:52 от Александр Ривилис »

Отмечено как Решение Борис_С 17-02-2021, 18:14:54

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Почему возникает Exception: 'eLockViolation'
« Ответ #1 : 17-02-2021, 15:45:47 »
Потому что работаешь в контексте приложения и не блокируешь документ.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Почему возникает Exception: 'eLockViolation'
« Ответ #2 : 17-02-2021, 16:09:46 »
Ищи примеры на форуме по контексту LockDocument
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Почему возникает Exception: 'eLockViolation'
« Ответ #3 : 17-02-2021, 17:21:55 »
Что интересно с этим eLockViolation. Было у меня 2 проекта, всё работало отлично, но как только я решил выделить из них общие модули в отдельный проект, то сразу стал вылетать eLockViolation :))

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Почему возникает Exception: 'eLockViolation'
« Ответ #4 : 17-02-2021, 17:24:12 »
Lemieux,
Видать плохо выделял...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Борис_САвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 238
  • Карма: 3
Re: Почему возникает Exception: 'eLockViolation'
« Ответ #5 : 17-02-2021, 18:15:47 »
Спасибо. Все работает.