Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs	(revision 12691)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionChartAggregationView.cs	(revision 12692)
@@ -242,4 +242,6 @@
       dataRowComboBox.Items.Clear();
       var resultName = (string)dataTableComboBox.SelectedItem;
+      if (resultName == null) return;
+
       var dataTables = from run in Content
                        where run.Results.ContainsKey(resultName)
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionTableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionTableView.cs	(revision 12691)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionTableView.cs	(revision 12692)
@@ -53,5 +53,4 @@
       base.OnContentChanged();
       if (Content != null) {
-        runToRowMapping = Enumerable.Range(0, Content.Count).ToArray();
         UpdateRowAttributes();
       }
@@ -151,6 +150,6 @@
         suppressUpdates = Content.UpdateOfRunsInProgress;
         if (!suppressUpdates) {
+          UpdateData();
           UpdateRowAttributes();
-          UpdateData();
         }
       }
@@ -179,5 +178,4 @@
     protected override void ClearSorting() {
       base.ClearSorting();
-      runToRowMapping = Enumerable.Range(0, Content.Count).ToArray();
       UpdateRowAttributes();
     }
@@ -198,9 +196,10 @@
         i++;
       }
-      UpdateRowAttributes();
+      UpdateRowAttributes(rebuild: false);
       return newSortedIndex;
     }
 
-    private void UpdateRowAttributes() {
+    private void UpdateRowAttributes(bool rebuild = true) {
+      if (rebuild) runToRowMapping = Enumerable.Range(0, Content.Count).ToArray();
       int runIndex = 0;
       foreach (IRun run in Content) {
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs	(revision 12691)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs	(revision 12692)
@@ -41,4 +41,5 @@
     private Dictionary<IRun, List<ListViewItem>> itemListViewItemMapping;
     private bool validDragOperation;
+    private bool suppressUpdates;
 
     public new IItemCollection<IRun> Content {
@@ -66,4 +67,6 @@
       Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<IRun>(Content_ItemsRemoved);
       Content.CollectionReset -= new CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
+      if (RunCollection != null)
+        RunCollection.UpdateOfRunsInProgressChanged -= new EventHandler(RunCollection_UpdateOfRunsInProgressChanged);
       foreach (IRun run in itemListViewItemMapping.Keys) {
         DeregisterItemEvents(run);
@@ -76,4 +79,6 @@
       Content.ItemsRemoved += new CollectionItemsChangedEventHandler<IRun>(Content_ItemsRemoved);
       Content.CollectionReset += new CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
+      if (RunCollection != null)
+        RunCollection.UpdateOfRunsInProgressChanged += new EventHandler(RunCollection_UpdateOfRunsInProgressChanged);
     }
     private void DeregisterItemEvents(IRun item) {
@@ -394,4 +399,5 @@
     #region Content Events
     private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRun> e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
         Invoke(new CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded), sender, e);
@@ -407,4 +413,5 @@
     }
     private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRun> e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
         Invoke(new CollectionItemsChangedEventHandler<IRun>(Content_ItemsRemoved), sender, e);
@@ -422,4 +429,5 @@
     }
     private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
         Invoke(new CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset), sender, e);
@@ -440,8 +448,30 @@
       }
     }
+    private void RunCollection_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
+      if (InvokeRequired) Invoke((Action<object, EventArgs>)RunCollection_UpdateOfRunsInProgressChanged, sender, e);
+      else {
+        suppressUpdates = RunCollection.UpdateOfRunsInProgress;
+        if (!suppressUpdates) {
+          foreach (IRun item in Content) {
+            //remove only the first matching ListViewItem, because the IRun could be contained multiple times in the ItemCollection
+            ListViewItem listViewItem = GetListViewItemsForItem(item).FirstOrDefault();
+            if (listViewItem != null) RemoveListViewItem(listViewItem);
+          }
+          RebuildImageList();
+          foreach (IRun item in Content)
+            AddListViewItem(CreateListViewItem(item));
+
+          AdjustListViewColumnSizes();
+          analyzeRunsToolStripDropDownButton.Enabled = itemsListView.Items.Count > 0;
+          clearButton.Enabled = itemsListView.Items.Count > 0 && !Content.IsReadOnly && !ReadOnly;
+          runCollectionConstraintCollectionView.ReadOnly = itemsListView.Items.Count == 0;
+        }
+      }
+    }
     #endregion
 
     #region Item Events
     private void Item_ItemImageChanged(object sender, EventArgs e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
         Invoke(new EventHandler(Item_ItemImageChanged), sender, e);
@@ -453,4 +483,5 @@
     }
     private void Item_ToStringChanged(object sender, EventArgs e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
         Invoke(new EventHandler(Item_ToStringChanged), sender, e);
@@ -463,6 +494,7 @@
     }
     private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e) {
+      if (suppressUpdates) return;
       if (InvokeRequired)
-        this.Invoke((Action<object, PropertyChangedEventArgs>)Item_PropertyChanged, sender, e);
+        Invoke((Action<object, PropertyChangedEventArgs>)Item_PropertyChanged, sender, e);
       else {
         IRun run = (IRun)sender;
Index: /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 12691)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 12692)
@@ -483,4 +483,5 @@
     #region Filtering
     private void UpdateFiltering(bool reset) {
+      var oldUpateRuns = UpdateOfRunsInProgress;
       UpdateOfRunsInProgress = true;
       if (reset)
@@ -488,5 +489,5 @@
       foreach (IRunCollectionConstraint constraint in this.constraints)
         constraint.Check();
-      UpdateOfRunsInProgress = false;
+      UpdateOfRunsInProgress = oldUpateRuns;
     }
 
@@ -550,4 +551,5 @@
     #region Modification
     public void Modify() {
+      var oldUpateRuns = UpdateOfRunsInProgress;
       UpdateOfRunsInProgress = true;
       var runs = this.ToList();
@@ -564,5 +566,5 @@
         }
       }
-      UpdateOfRunsInProgress = false;
+      UpdateOfRunsInProgress = oldUpateRuns;
     }
 
