활성 문서에서 네이티브 개체를 추가, 제거 및 편집 할 때 추적해야하는 프로그램을위한 플러그인을 작성하고 있습니다. API에는 문서를 편집 할 때 발생하는 이벤트가 있습니다. 그러나 프로그램은 네이티브 개체가 실제로 변경되는 시점을 추적하지 않습니다. 대신 변경되는 객체는 삭제되는 객체로 취급 된 다음 동일한 ID를 가진 다른 수정 된 객체로 즉시 대체됩니다. 이렇게하면 프로그램에서 실행 취소 레코드를 추적 할 수 있습니다.여러 이벤트가 발생했을 때 어떻게 추적합니까?
개체가 추가된다 : OnAddObject 이벤트
객체가 제거된다 : OnDeleteObject 이벤트
일부는 다음과 같이 내가 이벤트가 유발되는 것으로 확인되었습니다 실험 후
개체가 변경되었습니다. OnReplaceObject 이벤트 -> OnDeleteObject 이벤트 -> OnAddObject 이벤트
지금 내 플러그인은 내 맞춤 개체의 인스턴스를 컬렉션에 추가하거나 제거하는 OnAdd 및 OnDelete 이벤트 만보고 있습니다. 그러나 이것은 또한 객체가 내 플러그인을 바꿀 때마다 거의 동일한 객체를 다시 초기화하는 것을 제거한다는 것을 의미합니다. 차라리 그냥 문서 개체가 변경되어서 내 사용자 지정 개체를 완전히 다시 인스턴스화하지 않고 새로 고칠 수 있다는 것을 알고 싶습니다.
OnDelete 및 OnAdd 이벤트에 가입 된 내 메서드는 개체가 실제로 추가 또는 삭제되지 않고 변경 되었기 때문에 교체되는 것을 어떻게 알 수 있습니까?
대체 이벤트 전에 추가/제거 이벤트가 발생하기 때문에이 작업을 수행 할 수 없습니다. – Zyphrax
Eric의 질문에 따르면 Replace 이벤트가 발생하고 Delete가 이어지고 Add가 추가되므로 Johannes 솔루션은 스레딩 문제를 고려해야합니다. –
이 대답은 내 솔루션에 가장 가깝습니다. ALTERTAL BOOL 변수를 사용하지 않고 오히려 OnReplaceObject 이벤트에서 객체의 ID를 캐시했습니다. –