Index: /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/ChartAnalysisView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/ChartAnalysisView.cs	(revision 12598)
+++ /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/ChartAnalysisView.cs	(revision 12599)
@@ -108,9 +108,15 @@
 
     void Content_RowsChanged(object sender, EventArgs e) {
-      RebuildDataTableAsync();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_RowsChanged, sender, e);
+      else {
+        RebuildDataTableAsync();
+      }
     }
 
     void Content_ColumnsChanged(object sender, EventArgs e) {
-      if (!suppressUpdates) {
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_ColumnsChanged, sender, e);
+      else {
         RebuildDataTableAsync();
       }
@@ -118,16 +124,23 @@
 
     private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
-      UpdateComboboxes();
-      RebuildDataTableAsync();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IRun>>)Content_CollectionReset, sender, e);
+      else {
+        UpdateComboboxes();
+        RebuildDataTableAsync();
+      }
     }
 
     private void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
-      suppressUpdates = Content.UpdateOfRunsInProgress;
-
-      if (!suppressUpdates && !valuesAdded) {
-        RebuildDataTableAsync();
-      }
-      if (valuesAdded) {
-        valuesAdded = false;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_UpdateOfRunsInProgressChanged, sender, e);
+      else {
+        suppressUpdates = Content.UpdateOfRunsInProgress;
+
+        if (!suppressUpdates && !valuesAdded) {
+          RebuildDataTableAsync();
+        }
+        if (valuesAdded) {
+          valuesAdded = false;
+        }
       }
     }
@@ -248,9 +261,10 @@
 
     private void RebuildDataTableAsync() {
+      string resultName = (string)dataTableComboBox.SelectedItem;
+      if (string.IsNullOrEmpty(resultName)) return;
+
+      string rowName = (string)dataRowComboBox.SelectedItem;
+
       progress = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, "Calculating values...");
-
-      string resultName = (string)dataTableComboBox.SelectedItem;
-      string rowName = (string)dataRowComboBox.SelectedItem;
-
       var task = Task.Factory.StartNew(() => RebuildDataTable(resultName, rowName));
 
Index: /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/CorrelationView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/CorrelationView.cs	(revision 12598)
+++ /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/CorrelationView.cs	(revision 12599)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Collections;
 using HeuristicLab.Core.Views;
 using HeuristicLab.Data;
@@ -81,5 +82,5 @@
       Content.ColumnsChanged += Content_ColumnsChanged;
       Content.RowsChanged += Content_RowsChanged;
-      Content.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
+      Content.CollectionReset += new CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
       Content.UpdateOfRunsInProgressChanged += Content_UpdateOfRunsInProgressChanged;
     }
@@ -89,32 +90,43 @@
       Content.ColumnsChanged -= Content_ColumnsChanged;
       Content.RowsChanged -= Content_RowsChanged;
-      Content.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
+      Content.CollectionReset -= new CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
       Content.UpdateOfRunsInProgressChanged -= Content_UpdateOfRunsInProgressChanged;
     }
 
     void Content_RowsChanged(object sender, EventArgs e) {
-      UpdateUI();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_RowsChanged, sender, e);
+      else {
+        UpdateUI();
+      }
     }
 
     void Content_ColumnsChanged(object sender, EventArgs e) {
-      if (!suppressUpdates) {
-        UpdateUI();
-      }
-    }
-
-    private void Content_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IRun> e) {
-      UpdateUI();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_ColumnsChanged, sender, e);
+      else {
+        UpdateUI();
+      }
+    }
+
+    private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IRun>>)Content_CollectionReset, sender, e);
+      else {
+        UpdateUI();
+      }
     }
 
     private void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
-      suppressUpdates = Content.UpdateOfRunsInProgress;
-      UpdateUI();
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_UpdateOfRunsInProgressChanged, sender, e);
+      else {
+        suppressUpdates = Content.UpdateOfRunsInProgress;
+        UpdateUI();
+      }
     }
     #endregion
 
     private void UpdateUI() {
-      if (!suppressUpdates) {
-        RebuildCorrelationTable();
-      }
+      RebuildCorrelationTable();
     }
 
Index: /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/SampleSizeInfluenceView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/SampleSizeInfluenceView.cs	(revision 12598)
+++ /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/SampleSizeInfluenceView.cs	(revision 12599)
@@ -41,5 +41,5 @@
     private const string BoxPlotSeriesName = "BoxPlotSeries";
     private const string BoxPlotChartAreaName = "BoxPlotChartArea";
-    private const string delimitor = ";";
+    private const string delimiter = ";";
 
     private bool suppressUpdates = false;
@@ -72,5 +72,4 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.Reset += new EventHandler(Content_Reset);
       Content.ColumnNamesChanged += new EventHandler(Content_ColumnNamesChanged);
       Content.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded);
@@ -83,5 +82,4 @@
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.Reset -= new EventHandler(Content_Reset);
       Content.ColumnNamesChanged -= new EventHandler(Content_ColumnNamesChanged);
       Content.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded);
@@ -142,13 +140,13 @@
       DeregisterRunEvents(e.OldItems);
       RegisterRunEvents(e.Items);
-      UpdateAll();
+      if (!suppressUpdates) UpdateAll();
     }
     private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRun> e) {
       DeregisterRunEvents(e.Items);
-      UpdateComboBoxes();
+      if (!suppressUpdates) UpdateComboBoxes();
     }
     private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRun> e) {
       RegisterRunEvents(e.Items);
-      UpdateComboBoxes();
+      if (!suppressUpdates) UpdateComboBoxes();
     }
     private void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
@@ -157,15 +155,5 @@
       else {
         suppressUpdates = Content.UpdateOfRunsInProgress;
-        if (!suppressUpdates) UpdateDataPoints();
-      }
-    }
-
-    private void Content_Reset(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Reset), sender, e);
-      else {
-        this.categoricalMapping.Clear();
-        UpdateDataPoints();
-        UpdateAxisLabels();
+        if (!suppressUpdates) UpdateAll();
       }
     }
@@ -174,7 +162,5 @@
         Invoke(new EventHandler(Content_ColumnNamesChanged), sender, e);
       else {
-        if (!suppressUpdates) {
-          UpdateComboBoxes();
-        }
+        if (!suppressUpdates) UpdateComboBoxes();
       }
     }
@@ -182,7 +168,5 @@
       if (InvokeRequired)
         this.Invoke(new EventHandler(run_Changed), sender, e);
-      else if (!suppressUpdates) {
-        UpdateDataPoints();
-      }
+      else if (!suppressUpdates) UpdateDataPoints();
     }
 
@@ -190,5 +174,5 @@
       if (InvokeRequired)
         Invoke(new EventHandler(Content_AlgorithmNameChanged), sender, e);
-      else UpdateCaption();
+      else if (!suppressUpdates) UpdateCaption();
     }
     #endregion
@@ -226,11 +210,11 @@
         if (values.Any()) {
           if (hypergeometricCheckBox.Checked) {
-            xAxisTextBox.Text += ((int)(values.Count() / 16)) + delimitor + " ";
-            xAxisTextBox.Text += ((int)(values.Count() / 8)) + delimitor + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 16)) + delimiter + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 8)) + delimiter + " ";
             xAxisTextBox.Text += (int)(values.Count() / 4);
           } else {
-            xAxisTextBox.Text += ((int)(values.Count() / 4)) + delimitor + " ";
-            xAxisTextBox.Text += ((int)(values.Count() / 2)) + delimitor + " ";
-            xAxisTextBox.Text += ((int)(values.Count() / 4 * 3)) + delimitor + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 4)) + delimiter + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 2)) + delimiter + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 4 * 3)) + delimiter + " ";
             xAxisTextBox.Text += (int)(values.Count());
           }
@@ -340,5 +324,5 @@
 
     private List<int> ParseGroupSizesFromText(string groupsText, bool verbose = true) {
-      string[] gs = groupsText.Split(delimitor.ToCharArray());
+      string[] gs = groupsText.Split(delimiter.ToCharArray());
       List<int> vals = new List<int>();
 
@@ -351,8 +335,7 @@
             v = int.Parse(ns);
             vals.Add(v);
-          }
-          catch (Exception ex) {
+          } catch (Exception ex) {
             if (verbose) {
-              ErrorHandling.ShowErrorDialog("Can't parse group sizes. Please only use numbers seperated by a " + delimitor + ". ", ex);
+              ErrorHandling.ShowErrorDialog("Can't parse group sizes. Please only use numbers seperated by a " + delimiter + ". ", ex);
             }
           }
@@ -625,5 +608,5 @@
           string newVals = "";
           foreach (int v in values) {
-            newVals += v + delimitor + " ";
+            newVals += v + delimiter + " ";
           }
           xAxisTextBox.Text = newVals;
Index: /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/StatisticalTestsView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/StatisticalTestsView.cs	(revision 12598)
+++ /trunk/sources/HeuristicLab.Analysis.Statistics.Views/3.3/StatisticalTestsView.cs	(revision 12599)
@@ -40,4 +40,5 @@
     private const int requiredSampleSize = 5;
     private double[][] data;
+    private bool suppressUpdates = false;
 
     public double SignificanceLevel {
@@ -105,9 +106,15 @@
 
     void Content_RowsChanged(object sender, EventArgs e) {
-      RebuildDataTable();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_RowsChanged, sender, e);
+      else {
+        RebuildDataTable();
+      }
     }
 
     void Content_ColumnsChanged(object sender, EventArgs e) {
-      if (!Content.UpdateOfRunsInProgress) {
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_ColumnsChanged, sender, e);
+      else {
         RebuildDataTable();
       }
@@ -115,10 +122,16 @@
 
     private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
-      RebuildDataTable();
+      if (suppressUpdates) return;
+      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IRun>>)Content_CollectionReset, sender, e);
+      else {
+        RebuildDataTable();
+      }
     }
 
     void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
-      if (!Content.UpdateOfRunsInProgress) {
-        RebuildDataTable();
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_UpdateOfRunsInProgressChanged, sender, e);
+      else {
+        suppressUpdates = Content.UpdateOfRunsInProgress;
+        if (!suppressUpdates) RebuildDataTable();
       }
     }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs	(revision 12598)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs	(revision 12599)
@@ -168,18 +168,24 @@
 
     private void UpdateRuns(IEnumerable<IRun> runs) {
-      if (suppressUpdates) return;
       foreach (var run in runs) {
         //update color
-        foreach (var dataRow in runMapping[run]) {
-          dataRow.VisualProperties.Color = run.Color;
+        if (!runMapping.ContainsKey(run)) {
+          runMapping[run] = ExtractDataRowsFromRun(run).ToList();
+          RegisterRunEvents(run);
+        } else {
+          foreach (var dataRow in runMapping[run]) {
+            dataRow.VisualProperties.Color = run.Color;
+          }
         }
-        //update visibility - remove and add all rows to keep the same order as before
-        combinedDataTable.Rows.Clear();
-        combinedDataTable.Rows.AddRange(runMapping.Where(mapping => mapping.Key.Visible).SelectMany(mapping => mapping.Value));
-      }
+      }
+      //update visibility - remove and add all rows to keep the same order as before
+      combinedDataTable.Rows.Clear();
+      combinedDataTable.Rows.AddRange(runMapping.Where(mapping => mapping.Key.Visible).SelectMany(mapping => mapping.Value));
     }
 
     private IEnumerable<DataRow> ExtractDataRowsFromRun(IRun run) {
       var resultName = (string)dataTableComboBox.SelectedItem;
+      if (string.IsNullOrEmpty(resultName)) yield break;
+
       var rowName = (string)dataRowComboBox.SelectedItem;
       if (!run.Results.ContainsKey(resultName)) yield break;
