This table describes how the timer manages the execution queue.
Approximate
Elapsed Time
(Seconds)
Action
0 Start the first execution of the callback.
1 Attempt to start the second execution of the callback. The first
execution is not complete, but the execution queue is empty. The
timer adds the callback to the queue.
1.6 Finish the first callback execution, and start the second. This action
clears the execution queue.
2 Attempt to start the third callback execution. The second execution is
not complete, but the queue is empty. The timer adds the callback to
the queue.
3 Attempt to start the fourth callback execution. The third callback is in
the execution queue, so the timer drops this execution of the function.
3.2 Finish the second callback and start the third, clearing the execution
queue.
4 Attempt to start another callback execution. Because the queue is
empty, the timer adds the callback to the queue. This is the fifth
attempt, but only the fourth instance that will run.
4.8 Finish the third execution and start the fourth instance, clearing the
queue.
5 Attempt to start another callback. An instance is running, but the
execution queue is empty, so the timer adds it to the queue. This is
the fifth instance that will run.
6 Do nothing: the value of the TasksToExecute property is 5 , and the
fifth instance to run is in the queue.
6.4 Finish the fourth callback execution and start the fifth.
8 Finish the fifth callback execution.
Error Mode
The 'error' mode for the BusyMode property is similar to the 'drop' mode: In both
modes, the timer allows only one instance of the callback in the execution queue.
Handling Timer Queuing Conflicts