internal void Shutdown() { try { if (IsInitialized) { foreach (var extensionHandle in extensionHandles) { try { extensionHandle.GetComponent().Shutdown(); } catch (Exception ex) { logger.Log(LogSeverity.Error, string.Format("Failed to shutdown shell extension '{0}'.", extensionHandle.Id), ex); } } } } finally { if (logger != null) { runtime.RemoveLogListener(logger); } logger = null; shellPackage = null; shellAddInHandler = null; } }
internal void Initialize(ShellPackage shellPackage, ShellAddInHandler shellAddInHandler) { if (IsInitialized) { Shutdown(); } this.shellPackage = shellPackage; this.shellAddInHandler = shellAddInHandler; logger = new ShellLogger(shellPackage); runtime.AddLogListener(logger); foreach (var extensionHandle in extensionHandles) { try { extensionHandle.GetComponent().Initialize(); } catch (Exception ex) { logger.Log(LogSeverity.Error, string.Format("Failed to initialize shell extension '{0}'.", extensionHandle.Id), ex); } } }
public static ShellHolder Initialize(ShellPackage shellPackage, ShellAddInHandler shellAddInHandler) { DefaultShell shell = ShellAccessor.Instance; shell.Initialize(shellPackage, shellAddInHandler); return(new ShellHolder(shell)); }
/// <summary> /// Called when the Shell Add-In has been disconnected. /// </summary> public void AddInDisconnected() { ShellLock.WithWriterLock(() => { addInHandler = null; UpdateShellActivationWithWriterLockHeld(); }); }
/// <summary> /// Called when the Shell Add-In has been connected. /// </summary> /// <param name="addInHandler">The add-in handler.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="addInHandler"/> is null.</exception> /// <exception cref="InvalidOperationException">Thrown if a different <paramref name="addInHandler"/> has already reported being connected.</exception> public void AddInConnected(ShellAddInHandler addInHandler) { if (addInHandler == null) throw new ArgumentNullException("addInHandler"); ShellLock.WithWriterLock(() => { if (this.addInHandler != null) { if (this.addInHandler == addInHandler) return; throw new InvalidOperationException("Multiple add-in handlers appear to be attempting to activate the shell."); } this.addInHandler = addInHandler; UpdateShellActivationWithWriterLockHeld(); }); }
/// <summary> /// Called when the Shell Add-In has been connected. /// </summary> /// <param name="addInHandler">The add-in handler.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="addInHandler"/> is null.</exception> /// <exception cref="InvalidOperationException">Thrown if a different <paramref name="addInHandler"/> has already reported being connected.</exception> public void AddInConnected(ShellAddInHandler addInHandler) { if (addInHandler == null) { throw new ArgumentNullException("addInHandler"); } ShellLock.WithWriterLock(() => { if (this.addInHandler != null) { if (this.addInHandler == addInHandler) { return; } throw new InvalidOperationException("Multiple add-in handlers appear to be attempting to activate the shell."); } this.addInHandler = addInHandler; UpdateShellActivationWithWriterLockHeld(); }); }
public static ShellHolder Initialize(ShellPackage shellPackage, ShellAddInHandler shellAddInHandler) { DefaultShell shell = ShellAccessor.Instance; shell.Initialize(shellPackage, shellAddInHandler); return new ShellHolder(shell); }