public void Dispose()
{
sourceProject.ComponentTypesChanged -= OnSourceProjectLibsChanged;
sourceProject.ProjectReloaded -= OnSourceProjectReloaded;
gproject.ModifiedChanged -= new EventHandler (OnModifiedChanged);
gproject.Changed -= new EventHandler (OnChanged);
gproject.ProjectReloaded -= OnProjectReloaded;
gproject.ProjectReloading -= OnProjectReloading;
// gproject.WidgetMemberNameChanged -= new Stetic.Wrapper.WidgetNameChangedHandler (OnWidgetNameChanged);
if (!autoCommitChanges) {
// Don't dispose the project here! it will be disposed by the frontend
if (widget != null) {
widget.SelectionChanged -= OnSelectionChanged;
// Don't dispose the widget. It will be disposed when destroyed together
// with the container
widget = null;
}
}
if (plug != null)
plug.Destroy ();
gproject = null;
rootWidget = null;
frontend = null;
System.Runtime.Remoting.RemotingServices.Disconnect (this);
disposed = true;
}
protected override void OnDestroyed() { try { if (disposed) { return; } if (project.App.ActiveProject == editedProject) { project.App.ActiveProject = null; } disposed = true; frontend.disposed = true; editedProject.SignalAdded -= OnSignalAdded; editedProject.SignalRemoved -= OnSignalRemoved; editedProject.SignalChanged -= OnSignalChanged; editedProject.ComponentNameChanged -= OnComponentNameChanged; editedProject.BackendChanged -= OnProjectBackendChanged; editedProject.ComponentTypesChanged -= OnComponentTypesChanged; project.BackendChanged -= OnProjectBackendChanged; if (session != null) { session.Dispose(); session = null; } if (!autoCommitChanges) { editedProject.Dispose(); } System.Runtime.Remoting.RemotingServices.Disconnect(frontend); frontend = null; rootWidget = null; selection = null; } finally { base.OnDestroyed(); } }