private void btnRun_Click(object sender, RoutedEventArgs e)
		{
			OpenFileDialog dlg = new OpenFileDialog();
			dlg.Filter = "Programs|*.exe|All files|*.*";
			dlg.DefaultExt = ".exe";
			if (!(dlg.ShowDialog() ?? false))
				return;
			string path = dlg.FileName;

			// remove UI before disposing profiler
			//this.timeLine.ValuesList.Clear();
			if (this.provider != null)
				this.provider.Close();

			if (this.profiler != null)
				this.profiler.Dispose();
			
			string pathToDb = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(Profiler.Controller.Profiler).Assembly.Location), "output.sdps");
			if (File.Exists(pathToDb))
				File.Delete(pathToDb);
			
			this.database = new TempFileDatabase();
			
			this.profiler = new Profiler.Controller.Profiler(path, database.GetWriter(), new ProfilerOptions());
			profiler.RegisterFailed += delegate { MessageBox.Show("register failed"); };
			profiler.DeregisterFailed += delegate { MessageBox.Show("deregister failed"); };

			this.profiler.OutputUpdated += profiler_OutputUpdated;
			this.profiler.SessionEnded += profiler_SessionEnded;

			this.profiler.Start();

			this.btnRun.IsEnabled = false;
			this.btnStop.IsEnabled = true;
		}
        private void btnRun_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter     = "Programs|*.exe|All files|*.*";
            dlg.DefaultExt = ".exe";
            if (!(dlg.ShowDialog() ?? false))
            {
                return;
            }
            string path = dlg.FileName;

            // remove UI before disposing profiler
            //this.timeLine.ValuesList.Clear();
            if (this.provider != null)
            {
                this.provider.Close();
            }

            if (this.profiler != null)
            {
                this.profiler.Dispose();
            }

            string pathToDb = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(Profiler.Controller.Profiler).Assembly.Location), "output.sdps");

            if (File.Exists(pathToDb))
            {
                File.Delete(pathToDb);
            }

            this.database = new TempFileDatabase();

            this.profiler              = new Profiler.Controller.Profiler(path, database.GetWriter(), new ProfilerOptions());
            profiler.RegisterFailed   += delegate { MessageBox.Show("register failed"); };
            profiler.DeregisterFailed += delegate { MessageBox.Show("deregister failed"); };

            this.profiler.OutputUpdated += profiler_OutputUpdated;
            this.profiler.SessionEnded  += profiler_SessionEnded;

            this.profiler.Start();

            this.btnRun.IsEnabled  = false;
            this.btnStop.IsEnabled = true;
        }