<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Disable IUpdater from another App - UIControlledApplication in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163206#M27452</link>
    <description>&lt;P&gt;Thanks &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/824630"&gt;@jeremy_tammik&lt;/a&gt;, and yes I greatly appreciate the help. I think the drawback here is that the External command does not fire while I am in the command / on form in App #2. It only seems to fire once after the form closes. I suppose I could go modeless and transition everything to ExternalEvents, but my path for now is moving from App #1 to App #2. May move it back and use a book flag as previously noted, but I'd really like to avoid that for performance.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I did also try changing when the call happened to the initial command, form initialization, Load, and the button with no change. Again, I just don't think the API will let me force the Raise() while in a method like I'd like.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also like your idea of an App #3, but I can't even get 2 to work &lt;span class="lia-unicode-emoji" title=":face_with_tears_of_joy:"&gt;😂&lt;/span&gt;.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 17 Mar 2021 07:14:56 GMT</pubDate>
    <dc:creator>Sean_Page</dc:creator>
    <dc:date>2021-03-17T07:14:56Z</dc:date>
    <item>
      <title>Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160552#M27443</link>
      <description>&lt;P&gt;I have two different add-ins, and each of them have IUpdaters in them. Currently they reference each other tp share some methods but I would like to be able to disable the updaters in one of the apps.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1. I have a static method that works fine within the app to do this.&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;internal static Result EnableUpdaters(UIControlledApplication UIApp, string name)
		{
			try
			{
				if(name == "room" || name == "all")
				{
					Updaters.RoomCreationUpdater roomUpdater = new Updaters.RoomCreationUpdater(UIApp.ActiveAddInId);
					UpdaterRegistry.EnableUpdater(roomUpdater.GetUpdaterId());
				}
				return Result.Succeeded;
			}
			catch(Exception ex)
			{
				MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
				return Result.Failed;
			}
		}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. I have a public static method to call the Enable and Disable updater calls&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;public class SetUpdaters
    {
        public static void UpdaterOn(UIControlledApplication UIApp, string name)
        {
            App.EnableUpdaters(UIApp, name);
        }

        public static void UpdaterOff(UIControlledApplication UIApp, string name)
        {
            App.DisableUpdaters(UIApp, name);
        }
    }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3. Here is the call from the app. This call is using a control ID for the UIControlApp inside this app and passing it to the other. This is where I think I may be off, but when trying to use the static variable stored in the other app in lieu of passing it, that doesn't work either and I get the same error message.&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;OtherApp.Controls.SetUpdaters.UpdaterOff(ControlParams.application,"room");&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4. When I make the call between apps, I get an error saying that "Updater with this Id is not currently registered," but then of course the updater fires immediately following closure for that dialog so I know its working, and the updater does what it is supposed to do, I am just trying to keep it from doing it.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Updater ID.PNG" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/893880i949D9A5072B5C245/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Updater ID.PNG" alt="Updater ID.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there something fundamental here I am just overlooking?&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 12:28:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160552#M27443</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-16T12:28:36Z</dc:date>
    </item>
    <item>
      <title>Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160642#M27444</link>
      <description>&lt;P&gt;I vaguely seem to remember in the far distant past that the Revit API could sometimes be picky with external command and external application instances. I think back then that Revit would sometimes pass you a new (re-instantiated) instance of one of these classes that was not identical to the original instance that you used for some persistent purpose, e.g., setting up the updater, and that could cause some kind of problem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think possibly my specific case back then had to do with subscribing and unsubscribing to certain events.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You have two different external applications in this scenario, don't you? Have you kept hold of static references to both in some global variables, so that you can guarantee that you always use the same two references to these two objects?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 12:53:21 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160642#M27444</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-03-16T12:53:21Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160712#M27445</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case these two application (does not matter, db application, ui application, ui control application) objects would be different. You can check it via ActiveAddInId. You can't control app#1 updaters from app#2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See remarks in UpdaterRegistry class:&lt;/P&gt;
&lt;DIV id="mainSection"&gt;
&lt;DIV id="mainBody"&gt;
&lt;DIV id="allHistory" class="saveHistory"&gt;
&lt;DIV id="remarksSection" class="section"&gt;
&lt;P&gt;&lt;EM&gt;The registry is an application-wide singleton. It maintains all dynamic updaters currently registered, and also invokes them per their respective trigger condition during subsequent transactions.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Please note that &lt;STRONG&gt;only the application (an add-in, typically) which registered an updater is allowed to modify it later&lt;/STRONG&gt;, including unregistering it. Also, an application is not allowed to register an updater with an Id, that is based on another application's Id.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In your case you could share application state somewhere and check if you should or should not do some actions in IUpdater.Execute method&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 16 Mar 2021 13:14:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160712#M27445</guid>
      <dc:creator>aignatovich</dc:creator>
      <dc:date>2021-03-16T13:14:34Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160741#M27446</link>
      <description>&lt;P&gt;Thanks Jeremy, and yes that is what I confusing me. I use a static variable reference to the UIControlledApp in both of them (set on startup) to make calls to disable several updaters on a regular basis, that is why I am confused why it isn't working in this case. The obvious difference being the outside call, but I don't know why that would affect the static variable within the app I am calling since I am not directly trying to register, enable, disable or unregister it from another app, but just within itself.&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 13:22:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160741#M27446</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-16T13:22:16Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160820#M27447</link>
      <description>&lt;P&gt;Thanks for your reply&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1257478"&gt;@aignatovich&lt;/a&gt;. I had assumed this (without researching) and had originally tried to get this to work without passing the UIContApp, but when that didn't work I tried to pass it and it didn't work either. I understand what you are saying, but what I don't know is why it won't Disable / Enable within the app.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;App #1:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;OnStartUp&lt;OL&gt;&lt;LI&gt;Set global Static Variable for the UIContApp&lt;/LI&gt;&lt;LI&gt;Register Updater using global variable&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;Updater register fine&lt;/LI&gt;&lt;LI&gt;Enable / Disable calls using Static Variable work fine internally&lt;/LI&gt;&lt;LI&gt;Created two public static methods to Disable / Enable updaters USING the global Static Variable&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;App #2&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;When running code that would trigger updater, makes call to App #1&lt;OL&gt;&lt;LI&gt;Calls Static method to Disable / Enable Updaters in App #1&lt;OL&gt;&lt;LI&gt;Static Variable for UIContApp is WITHIN App #1, not passed by App #2&lt;/LI&gt;&lt;LI&gt;I receive the same message about the AddInId being wrong / missing&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;If I call this same static method from within App #1, say in an event handler for synchronizing, it works fine and no error is thrown.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;In short, it seems like the static variable in App #1 is not "holding" the value or at least isn't giving the correct value when used in the call from App #2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As you mentioned, I have been using a simple bool switch for now, but that didn't seem elegant and also means the updater still "fires" just doesn't do anything. On some of the larger models this could be working on it may still lag and that is what I was trying to avoid.&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 13:47:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160820#M27447</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-16T13:47:37Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160951#M27448</link>
      <description>&lt;P&gt;Yep, I also don't like those flags. It seems. I've found a solution for you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, we have this chain:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Invoke method (app #2 context) -&amp;gt; ... -&amp;gt; UpdaterRegistry.EnableUpdater [still in context of app #2]&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's try to break it with external events. IExternalEventHandler should be invoked in app#1 context.&lt;/P&gt;
&lt;P&gt;So I introduced UpdaterController:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace RevitAddin1
{
    public class UpdaterController : IExternalEventHandler
    {
        private readonly UpdaterId updaterId;
        private readonly ExternalEvent externalEvent;
        private bool isEnabled = true;

        private UpdaterController(UpdaterId updaterId)
        {
            this.updaterId = updaterId;
            externalEvent = ExternalEvent.Create(this);
        }

        public static UpdaterController Instance { get; private set; }

        public static void Initialize(UpdaterId updaterId) =&amp;gt; Instance = new UpdaterController(updaterId);

        public void Toggle() =&amp;gt; externalEvent.Raise();

        public void Execute(UIApplication app)
        {
            if (isEnabled)
                UpdaterRegistry.DisableUpdater(updaterId);
            else
                UpdaterRegistry.EnableUpdater(updaterId);

            isEnabled = !isEnabled;
        }

        public string GetName() =&amp;gt; nameof(UpdaterController);
    }
}&lt;/LI-CODE&gt;
&lt;P&gt;In app#1 onStartup method register an updater and initialize UpdaterController:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;        public Result OnStartup(UIControlledApplication a)
        {
            var updater = new MyUpdater(a);

            UpdaterRegistry.RegisterUpdater(updater);

            UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), new ElementClassFilter(typeof(Wall)), Element.GetChangeTypeElementAddition());

            UpdaterController.Initialize(updater.GetUpdaterId());

            return Result.Succeeded;
        }&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was too lazy to create a new project in Visual Studio, sorry, so I controlled my application from Iron Python Shell:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import System
clr.ImportExtensions(System.Linq)

assembly = System.AppDomain.CurrentDomain.GetAssemblies().Single(lambda x: x.GetName().Name == "RevitAddin1")

controllerType = assembly.GetType("RevitAddin1.UpdaterController")

prop = controllerType.GetProperty("Instance").GetValue(None)

method = controllerType.GetMethod("Toggle")

method.Invoke(prop, None)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And it works!&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 14:21:51 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10160951#M27448</guid>
      <dc:creator>aignatovich</dc:creator>
      <dc:date>2021-03-16T14:21:51Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10161635#M27449</link>
      <description>&lt;P&gt;Thanks again for this solution. It does work to Disable and Enable the updater as anticipated, however it does not fire in the correct (immediate) sequence and therefore is not effective in turning it off and on during a method.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Expected: WPF From OK Button --&amp;gt; Turn Off Updater --&amp;gt; Do work --&amp;gt; Turn On Updater --&amp;gt; Return Result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Experienced:&amp;nbsp;WPF From OK Button&amp;nbsp; --&amp;gt; Do work --&amp;gt; Turn Off Updater (First Call only)--&amp;gt; Return Result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there a way to force it to raise immediately in line?&lt;/P&gt;</description>
      <pubDate>Tue, 16 Mar 2021 17:33:47 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10161635#M27449</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-16T17:33:47Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10162953#M27450</link>
      <description>&lt;P&gt;I am accepting the solution from&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1257478"&gt;@aignatovich&lt;/a&gt;&amp;nbsp;because it did achieve what I was trying to do quite nicely, however I believe the sequencing was a matter of API limitations that I don't think I can get past.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Because of that, I decided to refactor my entire updater and actually port it to App #2. Its not the end of the world, but it does limit some functionality of App #1 when standalone but for now the best answer to my situation.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 04:16:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10162953#M27450</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-17T04:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163185#M27451</link>
      <description>&lt;P&gt;I love Alexanders nice implementation and his kind testing!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sorry to hear that the solution has a drawback fro you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I see no need whatsoever to accept that so.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How about refactoring the common functionality into a separate class library that is referenced and shared by both app 1 and 2?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 07:03:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163185#M27451</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-03-17T07:03:42Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163206#M27452</link>
      <description>&lt;P&gt;Thanks &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/824630"&gt;@jeremy_tammik&lt;/a&gt;, and yes I greatly appreciate the help. I think the drawback here is that the External command does not fire while I am in the command / on form in App #2. It only seems to fire once after the form closes. I suppose I could go modeless and transition everything to ExternalEvents, but my path for now is moving from App #1 to App #2. May move it back and use a book flag as previously noted, but I'd really like to avoid that for performance.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I did also try changing when the call happened to the initial command, form initialization, Load, and the button with no change. Again, I just don't think the API will let me force the Raise() while in a method like I'd like.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also like your idea of an App #3, but I can't even get 2 to work &lt;span class="lia-unicode-emoji" title=":face_with_tears_of_joy:"&gt;😂&lt;/span&gt;.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 07:14:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163206#M27452</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-17T07:14:56Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163227#M27453</link>
      <description>&lt;P&gt;I don't mean an app #3, I meant a class library that provides the functionality used by apps #1 and #2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 07:25:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10163227#M27453</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-03-17T07:25:36Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164109#M27454</link>
      <description>&lt;P&gt;Ah, yes that makes sense, but in some cases we use them at the same time, but we also have them split apart at times as well which is how I got to two initially, but I will think more about that an there may be a way to do that.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks again, and really what I would love to see is a way to Raise the ExternalEvent immediately!&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 14:13:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164109#M27454</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-17T14:13:06Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164219#M27455</link>
      <description>&lt;P&gt;There is no question about it, and it is common practice, very basic:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Common.dll implements common functionality&lt;/LI&gt;
&lt;LI&gt;App_1.dll references&amp;nbsp;Common.dll&lt;/LI&gt;
&lt;LI&gt;App_2.dll references&amp;nbsp;Common.dll&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can deploy either app alone or together and use them individually and simultaneously with no limitations whatsoever.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is standard usage!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 14:49:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164219#M27455</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-03-17T14:49:49Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164319#M27456</link>
      <description>&lt;P&gt;Thanks Jeremy, I think I may be using the terminology wrong, but what you are describing if effectively what I am doing now and App #1.dll is a Reference to App #2.dll and and that is how I am calling between them now. I have several calls between them leveraging different parts of each, and I could be wrong, but my issue seems to be the specific functionality isn't working like I want.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;App #2.dll&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Primary App or "Common" for this discussion&lt;OL&gt;&lt;LI&gt;Has App #1 is a reference in App #2&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;Code Creates multiple Rooms&lt;OL&gt;&lt;LI&gt;Need to Disable App#1 IUpdater While doing it&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;App #1.dll&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Has an IUpdater for Rooms&lt;/LI&gt;&lt;LI&gt;Implemented ExternalEventHandler code here to Enable / Disable Updater (per&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1257478"&gt;@aignatovich&lt;/a&gt;)&lt;OL&gt;&lt;LI&gt;Method executes, but only AFTER the method from App #2 is done and not in line therefore the updater still fires for each new room.&lt;BR /&gt;&lt;OL&gt;&lt;LI&gt;After App #2 form closes, the IUpdater in #1 is turned off so again the code is working, just not in sequence from what it appears. I have confirmed this with a task dialog that only fires once although it should fire each time the ExternalEvent is called by App #2.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;I did create a test command that singularly uses the external event to disable / enable the IUpdater and it works great, just as a single execution.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Again, I do apologize if I am mixing things up here and there is something I am just not understanding at the core programming level. I can easily admit I am no pro, but I &lt;U&gt;"think"&lt;/U&gt; I am approaching this correctly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I do really appreciate the help and thank you for taking your time to respond thus far!&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 15:15:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164319#M27456</guid>
      <dc:creator>Sean_Page</dc:creator>
      <dc:date>2021-03-17T15:15:49Z</dc:date>
    </item>
    <item>
      <title>Re: Disable IUpdater from another App - UIControlledApplication</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164636#M27457</link>
      <description>&lt;P&gt;You say,&amp;nbsp;&lt;SPAN&gt;I have several calls between them.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;That sounds complicated to me, too complicated for my little human brain.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I prefer not to have calls between things, if I can avoid it, but just from one thing to another.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;That is why I continue to suggest isolating everything basic into a basic class library that provides functionality and is not an external application or known to Revit in any way whatsoever.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Then, you can build both app 1 and 2 making use of the common functionality and try to avoid all calls between the two.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you think you need any, rethink!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;(I believe) You can solve it in such a manner that both of them only call the base functionality, and never each other.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I (believe I can) guarantee that will simplify things.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="https://en.wikipedia.org/wiki/KISS_principle" target="_blank"&gt;KISS&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 16:39:41 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/disable-iupdater-from-another-app-uicontrolledapplication/m-p/10164636#M27457</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-03-17T16:39:41Z</dc:date>
    </item>
  </channel>
</rss>

