diff --git a/src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/WpfViewer.cs b/src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/WpfViewer.cs
index 2e953f4d05..f66113b540 100644
--- a/src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/WpfViewer.cs
+++ b/src/AddIns/Misc/Profiler/Frontend/AddIn/Src/Views/WpfViewer.cs
@@ -5,11 +5,11 @@
// $Revision$
//
+using ICSharpCode.Core;
using System;
using System.IO;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
-
using ICSharpCode.Core.Presentation;
using ICSharpCode.Profiler.Controller.Data;
using ICSharpCode.SharpDevelop;
@@ -54,7 +54,15 @@ namespace ICSharpCode.Profiler.AddIn.Views
///
public WpfViewer(OpenedFile file)
{
- //this.Files.Add(file);
+ // HACK : OpenedFile architecture does not allow to keep files open
+ // but it is necessary for the ProfilerView to keep the session file open.
+ // We don't want to load all session data into memory.
+ // this.Files.Add(file);
+
+ // HACK : The file is not recognised by the FileService for closing if it is deleted while open.
+ // (reason see above comment)
+ FileService.FileRemoving += FileServiceFileRemoving;
+
this.file = file;
this.provider = ProfilingDataSQLiteProvider.FromFile(file.FileName);
this.TabPageText = Path.GetFileName(file.FileName);
@@ -69,6 +77,13 @@ namespace ICSharpCode.Profiler.AddIn.Views
);
}
+ void FileServiceFileRemoving(object sender, FileCancelEventArgs e)
+ {
+ if (FileUtility.IsEqualFileName(e.FileName, file.FileName) ||
+ FileUtility.IsBaseDirectory(e.FileName, file.FileName))
+ this.WorkbenchWindow.CloseWindow(true);
+ }
+
///
/// Refreshes the view
///
@@ -86,6 +101,8 @@ namespace ICSharpCode.Profiler.AddIn.Views
this.dataView.SaveUserState();
this.host.Dispose();
this.provider.Close();
+
+ FileService.FileRemoving -= FileServiceFileRemoving;
base.Dispose();
}
}