コード例 #1
0
        public RepeatedCallbackData RequestRepeatedCallback(DateTime startTime, TimeSpan repeatTimeSpan, RepeatedTimeCallbackDelegate callback)
        {
            var data = new RepeatedCallbackData()
            {
                callback = callback, startTime = startTime, repeatTimeSpan = repeatTimeSpan, counter = 0
            };

            data.nextTriggerTime = startTime + repeatTimeSpan;

            if (!RepeatedCallbackSimulation(data, Time))
            {
                RepeatedCallbacks.Add(data);
            }

            return(data);
        }
コード例 #2
0
        private bool RepeatedCallbackSimulation(RepeatedCallbackData data, DateTime currentTime)
        {
            var finished = false;

            while (data.nextTriggerTime <= currentTime)
            {
                if (data.callback(currentTime, data.counter))
                {
                    finished = true;
                    break;
                }

                data.counter++;
                data.nextTriggerTime += data.repeatTimeSpan;
            }

            return(finished);
        }
コード例 #3
0
 public bool StopRepeatedCallback(RepeatedCallbackData data)
 {
     return(RepeatedCallbacks.Remove(data));
 }