Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.Designer.cs	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.Designer.cs	(revision 7135)
@@ -71,4 +71,28 @@
             }
         }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:00:20")]
+        public global::System.TimeSpan ServiceStartStopTimeout {
+            get {
+                return ((global::System.TimeSpan)(this["ServiceStartStopTimeout"]));
+            }
+            set {
+                this["ServiceStartStopTimeout"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("00:00:03")]
+        public global::System.TimeSpan ServiceReconnectTimeout {
+            get {
+                return ((global::System.TimeSpan)(this["ServiceReconnectTimeout"]));
+            }
+            set {
+                this["ServiceReconnectTimeout"] = value;
+            }
+        }
     }
 }
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.settings
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.settings	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/Properties/Settings.settings	(revision 7135)
@@ -15,4 +15,10 @@
       <Value Profile="(Default)">HeuristicLab.Clients.Hive.Slave</Value>
     </Setting>
+    <Setting Name="ServiceStartStopTimeout" Type="System.TimeSpan" Scope="User">
+      <Value Profile="(Default)">00:00:20</Value>
+    </Setting>
+    <Setting Name="ServiceReconnectTimeout" Type="System.TimeSpan" Scope="User">
+      <Value Profile="(Default)">00:00:03</Value>
+    </Setting>
   </Settings>
 </SettingsFile>
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveCmdsWithKill.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveCmdsWithKill.cs	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveCmdsWithKill.cs	(revision 7135)
@@ -126,15 +126,13 @@
 
     private void StartService() {
-      TimeSpan timeout = TimeSpan.FromMilliseconds(5000);
-
       ServiceController service = new ServiceController(serviceName);
       try {
         if (service.Status == ServiceControllerStatus.Running) {
           service.Stop();
-          service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
+          service.WaitForStatus(ServiceControllerStatus.Stopped, Settings.Default.ServiceStartStopTimeout);
         }
 
         service.Start();
-        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
+        service.WaitForStatus(ServiceControllerStatus.Running, Settings.Default.ServiceStartStopTimeout);
       }
       catch (InvalidOperationException ex) {
@@ -147,18 +145,16 @@
 
     private void StopService() {
-      TimeSpan timeout = TimeSpan.FromMilliseconds(7000);
-
       ServiceController service = new ServiceController(serviceName);
       try {
         if (service.Status == ServiceControllerStatus.Running) {
           service.Stop();
-          service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
+          service.WaitForStatus(ServiceControllerStatus.Stopped, Settings.Default.ServiceStartStopTimeout);
         }
       }
       catch (InvalidOperationException ex) {
-        MessageBox.Show("Error starting service: Hive Slave Service not found!" + Environment.NewLine + ex.ToString());
+        MessageBox.Show("Error stopping service: Hive Slave Service not found!" + Environment.NewLine + ex.ToString());
       }
       catch (Exception ex) {
-        MessageBox.Show("Error starting service, exception is: " + Environment.NewLine + ex.ToString());
+        MessageBox.Show("Error stopping service, exception is: " + Environment.NewLine + ex.ToString());
       }
     }
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveItem.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveItem.cs	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveItem.cs	(revision 7135)
@@ -91,7 +91,9 @@
     public bool ReconnectToSlaveCore() {
       try {
+        DeregisterEvents();
         pipeProxy = pipeFactory.CreateChannel();
         StatusCommons st = pipeProxy.Subscribe();
         if (st != null) {
+          RegisterEvents();
           OnStatusChanged(st);
           return true;
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveMainViewBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveMainViewBase.cs	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveMainViewBase.cs	(revision 7135)
@@ -62,4 +62,5 @@
     protected override void DeregisterContentEvents() {
       Content.CoreConnectionChanged -= new EventHandler<Common.EventArgs<CoreConnection>>(Content_CoreConnectionChanged);
+      Content.SlaveDisplayStateChanged -= new EventHandler<Common.EventArgs<SlaveDisplayStat>>(Content_SlaveDisplayStateChanged);
       base.DeregisterContentEvents();
     }
@@ -68,9 +69,16 @@
       base.RegisterContentEvents();
       Content.CoreConnectionChanged += new EventHandler<Common.EventArgs<CoreConnection>>(Content_CoreConnectionChanged);
+      Content.SlaveDisplayStateChanged += new EventHandler<Common.EventArgs<SlaveDisplayStat>>(Content_SlaveDisplayStateChanged);
+    }
+
+    void Content_SlaveDisplayStateChanged(object sender, Common.EventArgs<SlaveDisplayStat> e) {
+      if (e.Value == SlaveDisplayStat.NoService) {
+        Task.Factory.StartNew(Connector);
+      }
     }
 
     void Content_CoreConnectionChanged(object sender, Common.EventArgs<CoreConnection> e) {
       if (e.Value == CoreConnection.Offline) {
-        Connector();
+        Task.Factory.StartNew(Connector);
       }
     }
@@ -119,5 +127,5 @@
 
         if (!connected) {
-          Thread.Sleep(1000);
+          Thread.Sleep(Settings.Default.ServiceReconnectTimeout);
         }
       }
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/app.config
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/app.config	(revision 7134)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/app.config	(revision 7135)
@@ -20,4 +20,10 @@
                 <value>HeuristicLab.Clients.Hive.Slave</value>
             </setting>
+            <setting name="ServiceStartStopTimeout" serializeAs="String">
+                <value>00:00:20</value>
+            </setting>
+            <setting name="ServiceReconnectTimeout" serializeAs="String">
+                <value>00:00:03</value>
+            </setting>
         </HeuristicLab.Clients.Hive.SlaveCore.Views.Properties.Settings>
     </userSettings>
