public void Dispose()
{
if (app is IsolatedApplication) {
IsolatedApplication iapp = app as IsolatedApplication;
iapp.BackendChanging -= OnBackendChanging;
iapp.BackendChanged -= OnBackendChanged;
}
if (tmpProjectFile != null && File.Exists (tmpProjectFile)) {
File.Delete (tmpProjectFile);
tmpProjectFile = null;
}
if (backend != null)
backend.Dispose ();
if (Disposed != null)
Disposed (this, EventArgs.Empty);
System.Runtime.Remoting.RemotingServices.Disconnect (this);
}
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(); } }