/// <summary> /// Removes an extension from the current session. /// </summary> /// <param name="extension">Extension</param> public void Remove(IExtension extension) { var fullName = extension.Name + " (id: " + extension.UniqueId + ")"; if (!extensions.Contains(extension)) { Log("ExtensionManager does not contain " + fullName + " extension"); return; } extensions.Remove(extension); try { extension.Dispose(); } catch (Exception ex) { Log(fullName + " extension cannot be disposed properly: " + ex.Message); } Log(fullName + " extension is removed"); if (ExtensionRemoved != null) { ExtensionRemoved(extension); } }
private void Flow() { try { isRunning = true; instance = (IExtension)Activator.CreateInstance(extensionType); Result = instance.Main(Args); } catch (ThreadAbortException) { Result = null; } catch (Exception e) { var appManager = LakeProvider.Lake.Get <IAppManager>(); Result = e; SLogger <ExtensionTask> .Warn($"{extensionType.Name}-extension error", e.InnerException); string fmt = appManager.GetPublicResouce <string>("OpenFxExceptionMsgTitleFmt"); fmt = string.Format(fmt, Wrapper.Info.Name); string sketch = appManager.GetPublicResouce <string>("OpenFxExceptionSketch"); appManager.ShowException(fmt, sketch, e.GetType() == typeof(TargetInvocationException) ? e.InnerException : e); } finally { instance.Dispose(); isRunning = false; Finished?.Invoke(this, new TaskFinishedEventArgs(this)); } }
public void Dispose(IExtension extension) { extension.Dispose(); if (!extension.IsRunning && _extensionsRunning.Contains(extension)) { _extensionsRunning.Remove(extension); } }
public void Remove(IExtension extension) { var fullName = extension.Name + " (id: " + extension.UniqueId + ")"; if (!extensions.Contains(extension)) { Log("ExtensionManager does not contain " + fullName + " extension"); return; } extensions.Remove(extension); extension.Dispose(); Log(fullName + " extension is removed"); if (ExtensionRemoved != null) { ExtensionRemoved(extension); } }