mirror of https://github.com/winsw/winsw
				
				
				
			[Issue #124] - Prevent the CPU overutilization due to the usage of Milliseconds instead of TotalMsec
							parent
							
								
									929b87c383
								
							
						
					
					
						commit
						dfafc2790d
					
				| 
						 | 
					@ -440,12 +440,24 @@ namespace winsw
 | 
				
			||||||
        private void WaitForProcessToExit(Process processoWait)
 | 
					        private void WaitForProcessToExit(Process processoWait)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SignalShutdownPending();
 | 
					            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
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
//                WriteEvent("WaitForProcessToExit [start]");
 | 
					//                WriteEvent("WaitForProcessToExit [start]");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                while (!processoWait.WaitForExit(_descriptor.SleepTime.Milliseconds))
 | 
					                while (!processoWait.WaitForExit(effectiveProcessWaitSleepTime))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    SignalShutdownPending();
 | 
					                    SignalShutdownPending();
 | 
				
			||||||
//                    WriteEvent("WaitForProcessToExit [repeat]");
 | 
					//                    WriteEvent("WaitForProcessToExit [repeat]");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue