Тема: AcEditorReactor::beginDoubleClick

Привет всем!
Наследую свой реактор от AcEditorReactor, перекрываю функцию beginDoubleClick. Из нее вызываю метод класса, который должен выполнить некоторые изменения на чертеже. В том числе, надо разблокировать слой:
    AcDbLayerTable *pLayerTable;
    acdbHostApplicationServices()->workingDatabase()->getLayerTable(pLayerTable, AcDb::kForRead);
    AcDbLayerTableRecord *pLayer;
    Acad::ErrorStatus es=pLayerTable->getAt(lay, pLayer, AcDb::kForWrite); 
    // здесь в es возвращается eLockViolation !!!
Че за ерунда? Внутри обработчиков событий не все можно делать?
Спасибо.

Re: AcEditorReactor::beginDoubleClick

1. Внутри реакторов действительно не всё можно делать. Относится ли твой случай к этой проблеме - не знаю. Возможно, то, что ты делаешь, и не против правил реакторов, но, как мне кажется, сообщение об ошибке говорит о том, что:

2. Прежде чем вносить изменения в базу данных, документ, в котором открыта эта база, должен быть закрыт для монопольного доступа (не на 100% уверен в корректности этого пассажа, но общий смысл тот).
Для того, чтобы "залочить" документ, достаточно создать объект класса
AcAxDocLock::AcAxDocLock(). В твоём случае, наверное, достаточно будет использовать перегруженный конструктор без параметров, т.к. это должно закрыть именно активный документ.

Более подробно разобраться/написать пока не могу :( - грипп долго не даёт сидеть за компом :(
Удачи.