Keeping IUpdater Implementations from Triggering One Another

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Is there a reliable and advised approach for handling interplay between multiple model updaters who are acting on one another's triggering elements? One of my overall objectives is bi-directional data flow between "bound" pairs of elements so the user can modify or delete either element in a pair and the updater effects changes to its mate. So of course within my main updater, I've already implemented a caseswitch variable as discussed here to avoid infinite looping. As I'm expanding the functionality though, I'm wanting to create more pairs that may overlap with one another e.g. {MEPFixtureA, GenericAnnotationA}, {GenericAnnotationA, ViewSheetA}. And that's opening up this scenario: "User modifies MEPFixtureA, so my updater1 makes changes to GenericAnnotationA. And then updater2 is being triggered by the changes to GenericAnnotationA and performing unneeded processing on it and ViewSheetA."
As I understand it, Updater2 is reinitialized with each trigger so there isn't any means to set its caseswitch variable within Updater1, but please tell me if I'm wrong. My next thought was to setup flags in Extensible Storage to mediate between the different updaters but that seems like overkill since there's no reason for that flag data to persist within the document file. I'm hoping there's some namespace level way to accomplish this that I'm unaware of. Or maybe I'm on the wrong track entirely by trying to setup multiple updaters: it seems like good coding practice to start modularizing into distinct updaters and further narrowing triggers' filters rather than continue to expand a single updater with logic to handle all element of interest, but is that true? I am interested in monitoring changes to several Revit-calculated parameters along the lines of the conversation here, so I'm forced into using changetypeany which contributes to the difficulty.
All guidance and advice are welcome--I'm just wanting to make sure I'm headed down the right path before I start radically restructuring the code and pushing ahead with development.