Я советую не делать никаких модификаций в методе Close(). Как-то я уже натыкался на проблемы с этим для сивильных объектов. Они все взаимосвязаны. Когда открыт один - нет никакой гарантии, что не открыт другой, связанный с ним. Код при этом работает через раз. Никогда не знаешь, когда "выстрелит" очередная проблема.
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.