protected T GetOrCreate(int instanceId, Func <T> factory) { _mainThread.Assert(); if (_toolWindowPanes.TryGetValue(instanceId, out ToolWindowPaneHolder holder)) { if (holder.ToolWindowPane != null) { return(holder.ToolWindowPane); } RemoveHolder(instanceId); } var instance = factory(); var vsUiShell = Services.GetService <IVsUIShell>(typeof(SVsUIShell)); ToolWindowUtilities.CreateToolWindow(vsUiShell, instance, instanceId); holder = new ToolWindowPaneHolder(instance, () => RemoveHolder(instanceId)); _toolWindowPanes.Add(instanceId, holder); return(instance); }
protected T GetOrCreate(int instanceId, Func <int, T> factory) { ToolWindowPaneHolder holder; if (_toolWindowPanes.TryGetValue(instanceId, out holder)) { if (holder.ToolWindowPane != null) { return(holder.ToolWindowPane); } RemoveHolder(instanceId); } var instance = factory(instanceId); IVsUIShell vsUiShell = VsAppShell.Current.GetGlobalService <IVsUIShell>(typeof(SVsUIShell)); ToolWindowUtilities.CreateToolWindow(vsUiShell, instance, instanceId); holder = new ToolWindowPaneHolder(instance, () => RemoveHolder(instanceId)); _toolWindowPanes.Add(instanceId, holder); return(instance); }