Index: /trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveJobManagerView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveJobManagerView.cs	(revision 15418)
+++ /trunk/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveJobManagerView.cs	(revision 15419)
@@ -61,5 +61,5 @@
     }
 
-    protected override void OnContentChanged() {
+    protected async override void OnContentChanged() {
       base.OnContentChanged();
       if (Content == null) {
@@ -67,6 +67,11 @@
       } else {
         hiveExperimentListView.Content = Content.Jobs;
-        if (Content != null)
-          Content.RefreshAsync(new Action<Exception>((Exception ex) => HandleServiceException(ex)));
+        if (Content != null) {
+          try {
+            await System.Threading.Tasks.Task.Run(() => Content.Refresh());
+          } catch (Exception ex) {
+            HandleServiceException(ex);
+          }
+        }
       }
     }
@@ -98,6 +103,10 @@
     }
 
-    private void refreshButton_Click(object sender, EventArgs e) {
-      Content.RefreshAsync(new Action<Exception>((Exception ex) => HandleServiceException(ex)));
+    private async void refreshButton_Click(object sender, EventArgs e) {
+      try {
+        await System.Threading.Tasks.Task.Run(() => Content.Refresh());
+      } catch (Exception ex) {
+        HandleServiceException(ex);
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs
===================================================================
--- /trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 15418)
+++ /trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 15419)
@@ -99,28 +99,12 @@
           jobs.Add(new RefreshableJob(j));
         }
-      }
-      catch {
+      } catch (NullReferenceException) {
+        // jobs was set to null during ClearHiveClient
+      } catch {
         jobs = null;
         throw;
-      }
-      finally {
+      } finally {
         OnRefreshed();
       }
-    }
-
-    public void RefreshAsync(Action<Exception> exceptionCallback) {
-      var call = new Func<Exception>(delegate() {
-        try {
-          Refresh();
-        }
-        catch (Exception ex) {
-          return ex;
-        }
-        return null;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        Exception ex = call.EndInvoke(result);
-        if (ex != null) exceptionCallback(ex);
-      }, null);
     }
     #endregion
@@ -146,14 +130,13 @@
     }
     public static void StoreAsync(Action<Exception> exceptionCallback, IHiveItem item, CancellationToken cancellationToken) {
-      var call = new Func<Exception>(delegate() {
+      var call = new Func<Exception>(delegate () {
         try {
           Store(item, cancellationToken);
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
           return ex;
         }
         return null;
       });
-      call.BeginInvoke(delegate(IAsyncResult result) {
+      call.BeginInvoke(delegate (IAsyncResult result) {
         Exception ex = call.EndInvoke(result);
         if (ex != null) exceptionCallback(ex);
@@ -294,6 +277,5 @@
         }
         TS.Task.WaitAll(tasks.ToArray());
-      }
-      finally {
+      } finally {
         refreshableJob.Job.Modified = false;
         refreshableJob.IsProgressing = false;
@@ -394,6 +376,5 @@
         taskUploadSemaphore.Release(); semaphoreReleased = true; // the semaphore has to be release before waitall!
         TS.Task.WaitAll(tasks.ToArray());
-      }
-      finally {
+      } finally {
         if (!semaphoreReleased) taskUploadSemaphore.Release();
       }
@@ -443,10 +424,9 @@
         } else if (refreshableJob.IsPaused()) {
           refreshableJob.ExecutionState = Core.ExecutionState.Paused;
-        } else { 
+        } else {
           refreshableJob.ExecutionState = Core.ExecutionState.Started;
         }
         refreshableJob.OnLoaded();
-      }
-      finally {
+      } finally {
         refreshableJob.IsProgressing = false;
         refreshableJob.Progress.Finish();
@@ -485,6 +465,5 @@
       try {
         return PersistenceUtil.Deserialize<ItemTask>(taskData.Data);
-      }
-      catch {
+      } catch {
         return null;
       }
@@ -497,6 +476,5 @@
     public static void TryAndRepeat(Action action, int repetitions, string errorMessage, ILog log = null) {
       while (true) {
-        try { action(); return; }
-        catch (Exception e) {
+        try { action(); return; } catch (Exception e) {
           if (repetitions == 0) throw new HiveException(errorMessage, e);
           if (log != null) log.LogMessage(string.Format("{0}: {1} - will try again!", errorMessage, e.ToString()));
