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 @@
HeuristicLab.Clients.Hive.Slave
+
+ 00:00:20
+
+
+ 00:00:03
+
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>(Content_CoreConnectionChanged);
+ Content.SlaveDisplayStateChanged -= new EventHandler>(Content_SlaveDisplayStateChanged);
base.DeregisterContentEvents();
}
@@ -68,9 +69,16 @@
base.RegisterContentEvents();
Content.CoreConnectionChanged += new EventHandler>(Content_CoreConnectionChanged);
+ Content.SlaveDisplayStateChanged += new EventHandler>(Content_SlaveDisplayStateChanged);
+ }
+
+ void Content_SlaveDisplayStateChanged(object sender, Common.EventArgs e) {
+ if (e.Value == SlaveDisplayStat.NoService) {
+ Task.Factory.StartNew(Connector);
+ }
}
void Content_CoreConnectionChanged(object sender, Common.EventArgs 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 @@
HeuristicLab.Clients.Hive.Slave
+
+ 00:00:20
+
+
+ 00:00:03
+