Index: trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs	(revision 8180)
+++ trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs	(revision 8181)
@@ -32,4 +32,5 @@
   public partial class OptimizerHiveTaskView : HiveTaskView {
     private Progress progress;
+    private ProgressView progressView;
 
     public new OptimizerHiveTask Content {
@@ -60,8 +61,14 @@
       base.RegisterContentEvents();
       Content.IsControllableChanged += new EventHandler(Content_IsControllableChanged);
+      progressView = new ProgressView(this, progress);
     }
 
     protected override void DeregisterContentEvents() {
       Content.IsControllableChanged -= new EventHandler(Content_IsControllableChanged);
+      if (progressView != null) {
+        progressView.Content = null;
+        progressView.Dispose();
+        progressView = null;
+      }
       base.DeregisterContentEvents();
     }
@@ -102,7 +109,5 @@
       progress.Status = "Pausing task. Please be patient for the command to take effect.";
       progress.ProgressState = ProgressState.Started;
-      using (var view = new ProgressView(this, progress)) {
-        Content.Pause();
-      }
+      Content.Pause();
     }
 
@@ -110,7 +115,5 @@
       progress.Status = "Stopping task. Please be patient for the command to take effect.";
       progress.ProgressState = ProgressState.Started;
-      using (var view = new ProgressView(this, progress)) {
-        Content.Stop();
-      }
+      Content.Stop();
     }
 
@@ -118,7 +121,5 @@
       progress.Status = "Resuming task. Please be patient for the command to take effect.";
       progress.ProgressState = ProgressState.Started;
-      using (var view = new ProgressView(this, progress)) {
-        Content.Restart();
-      }
+      Content.Restart();
     }
 
Index: trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBExperimentUploadView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBExperimentUploadView.cs	(revision 8180)
+++ trunk/sources/HeuristicLab.Clients.OKB.Views/3.3/RunCreation/Views/OKBExperimentUploadView.cs	(revision 8181)
@@ -54,5 +54,5 @@
     Algorithm selectedAlgorithm = null;
     Problem selectedProblem = null;
-    private ProgressView progressView; // this has to be disposed manually!
+    private ProgressView progressView;
     private Progress progress;
 
@@ -223,20 +223,18 @@
       progress.Status = "Uploading runs to OKB...";
       progress.ProgressValue = 0;
+      progress.ProgressState = ProgressState.Started;
       double count = dataGridView.Rows.Count;
       int i = 0;
-
-      using (var view = new ProgressView(this, progress)) {
-        foreach (DataGridViewRow row in dataGridView.Rows) {
-          selectedAlgorithm = algorithms.Where(x => x.Name == row.Cells[algorithmColumnIndex].Value.ToString()).FirstOrDefault();
-          selectedProblem = problems.Where(x => x.Name == row.Cells[problemColumnIndex].Value.ToString()).FirstOrDefault();
-          if (selectedAlgorithm == null || selectedProblem == null) {
-            throw new ArgumentException("Can't retrieve the algorithm/problem to upload");
-          }
-
-          OKBRun run = new OKBRun(selectedAlgorithm.Id, selectedProblem.Id, row.Tag as IRun, UserInformation.Instance.User.Id);
-          run.Store();
-          i++;
-          progress.ProgressValue = ((double)i) / count;
-        }
+      foreach (DataGridViewRow row in dataGridView.Rows) {
+        selectedAlgorithm = algorithms.Where(x => x.Name == row.Cells[algorithmColumnIndex].Value.ToString()).FirstOrDefault();
+        selectedProblem = problems.Where(x => x.Name == row.Cells[problemColumnIndex].Value.ToString()).FirstOrDefault();
+        if (selectedAlgorithm == null || selectedProblem == null) {
+          throw new ArgumentException("Can't retrieve the algorithm/problem to upload");
+        }
+
+        OKBRun run = new OKBRun(selectedAlgorithm.Id, selectedProblem.Id, row.Tag as IRun, UserInformation.Instance.User.Id);
+        run.Store();
+        i++;
+        progress.ProgressValue = ((double)i) / count;
       }
       ClearRuns();
