Browse Source

[Issue #124] - Prevent the CPU overutilization due to the usage of Milliseconds instead of TotalMsec

Oleg Nenashev 9 years ago
parent
commit
dfafc2790d
1 changed files with 13 additions and 1 deletions
  1. 13 1
      src/Core/ServiceWrapper/Main.cs

+ 13 - 1
src/Core/ServiceWrapper/Main.cs

@@ -440,12 +440,24 @@ namespace winsw
         private void WaitForProcessToExit(Process processoWait)
         {
             SignalShutdownPending();
+            
+            int effectiveProcessWaitSleepTime;
+            if (_descriptor.SleepTime.TotalMilliseconds > Int32.MaxValue)
+            {
+                Log.Warn("The requested sleep time " + _descriptor.SleepTime.TotalMilliseconds + "is greater that the max value " + 
+                    Int32.MaxValue + ". The value will be truncated");
+                effectiveProcessWaitSleepTime = Int32.MaxValue;
+            }
+            else
+            {
+                effectiveProcessWaitSleepTime = (int)_descriptor.SleepTime.TotalMilliseconds;
+            }
 
             try
             {
 //                WriteEvent("WaitForProcessToExit [start]");
 
-                while (!processoWait.WaitForExit(_descriptor.SleepTime.Milliseconds))
+                while (!processoWait.WaitForExit(effectiveProcessWaitSleepTime))
                 {
                     SignalShutdownPending();
 //                    WriteEvent("WaitForProcessToExit [repeat]");