public void StartForSubject <T>(T subject) { if (subject == null) { return; } var lazyLoadable = subject as ILazyLoadable; if (lazyLoadable != null && !lazyLoadable.IsLoaded) { _heavyWorkManager.Start(() => _lazyLoadTask.Load(lazyLoadable)); } var presenter = _openSingleStartPresenterInvoker.OpenPresenterFor(subject); try { presenter.Edit(subject); } catch (Exception) { //exception while loading the subject. We need to close the presenter to avoid memory leaks _applicationController.Close(subject); throw; } }
private void restoreLayout(WorkspaceLayoutItem layoutItem) { var subject = subjectFor(layoutItem); if (subject == null) { return; } var presenter = _openSingleStartPresenterInvoker.OpenPresenterFor(subject); try { presenter.Edit(subject); presenter.RestoreSettings(layoutItem.PresentationSettings); } catch (Exception) { //exception while loading the subject. We need to close the presenter to avoid memory leaks _applicationController.Close(subject); throw; } }