Document.Editor.Command(...) и т.п. = eInvalidInput на AutoCAD 2016

Автор Тема: Document.Editor.Command(...) и т.п. = eInvalidInput на AutoCAD 2016  (Прочитано 21260 раз)

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

Оффлайн A77X7Автор темы

  • ADN OPEN
  • Сообщений: 20
  • Карма: 0
По поводу перекомпиляции с подключенными событиями...

Подписываемся на событие (например, Application.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;).
Событие отрабатывает нормально.
Меняем код, перекомпилируем.
Отписаться от старого события уже не можем (Application.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;), ничего не происходит (исключение, например).
Подписываемся на новую версию события (Application.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;)
Получаем отработку двух версий одного события.
Отписываемся от события (Application.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;
Получаем отработку только старой версии события.
Ещё раз отписываемся (Application.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;), ничего не меняется, работает старая версия события.

Если в старом событии есть вызов метода f1 в этом же типе, то при его (метода f1) изменении работает старая версия метода f1.

Итого получается после перекомпиляции старая реализация не заменяется. Новая реализация "лежит" рядом. Если были ссылки на методы (и, думаю,  другое) в старой реализации они остаются и корректно ссылаются на старую реализацию. При получении ссылок после перекомпиляции, "выдаются" ссылки на новую реализацию.

Ничего не обрушилось. Наверное где-то в МСДН об этом написано. Всё ведь делается штатными средствами, без всякого хака.
« Последнее редактирование: 25-01-2016, 10:52:09 от A77X7 »

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

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