Пример #1
0
        // move to datetimeprovider
        public static bool WaitFor(
            TimeSpan waitTimeout,
            WaitConditionDelegate exitCondition,
            TimeSpan minSleep, TimeSpan maxSleep, int sleepMult, TimeSpan sleepInc,
            string timeoutExceptionMessage,
            TimeSpan logInterval, WaitLoggingDelegate loggingCallback)
        {
            TimeSpan       sleepTimeout = minSleep;
            DateTimeOffset dtNow        = DateTimeOffset.Now;
            DateTimeOffset waitExpires  = dtNow + waitTimeout;
            DateTimeOffset timeToLog    = dtNow + logInterval;

            while (dtNow < waitExpires)
            {
                if (exitCondition())
                {
                    return(true);
                }
                if ((loggingCallback != null) && (dtNow > timeToLog))
                {
                    // time to call logging callback
                    loggingCallback();
                    timeToLog = dtNow + logInterval;
                }
                // sanitise timeout
                if (sleepTimeout > maxSleep)
                {
                    sleepTimeout = maxSleep;
                }
                if (sleepTimeout < minSleep)
                {
                    sleepTimeout = minSleep;
                }
                Thread.Sleep(sleepTimeout);
                // calc next sleep timeout
                sleepTimeout = TimeSpan.FromSeconds(sleepTimeout.TotalSeconds * sleepMult).Add(sleepInc);
                dtNow        = DateTimeOffset.Now;
            }
            if (timeoutExceptionMessage != null)
            {
                throw new TimeoutException(timeoutExceptionMessage);
            }
            return(false);
        }
Пример #2
0
 public static bool WaitFor(TimeSpan waitTimeout, WaitConditionDelegate exitCondition, string timeoutExceptionMessage, TimeSpan logInterval, WaitLoggingDelegate logCallback)
 {
     return(WaitFor(waitTimeout, exitCondition, TimeSpan.FromMilliseconds(1), TimeSpan.FromMilliseconds(100), 2, TimeSpan.Zero, timeoutExceptionMessage, logInterval, logCallback));
 }
Пример #3
0
 public static bool WaitFor(TimeSpan waitTimeout, WaitConditionDelegate exitCondition, string timeoutExceptionMessage)
 {
     return(WaitFor(waitTimeout, exitCondition, TimeSpan.FromMilliseconds(1), TimeSpan.FromMilliseconds(100), 2, TimeSpan.Zero, timeoutExceptionMessage, TimeSpan.Zero, null));
 }
Пример #4
0
 public static bool WaitFor(TimeSpan waitTimeout, WaitConditionDelegate exitCondition)
 {
     return(WaitFor(waitTimeout, exitCondition, TimeSpan.FromMilliseconds(1), TimeSpan.FromMilliseconds(100), 2, TimeSpan.Zero, null, TimeSpan.Zero, null));
 }