I have the feeling that your timers overlap and autocancel, more specifically:
i would try to change it into:
I think the timer is Scheduled for "now" then it runs and finds another timer running and it will cancel it.
As mentioned earlier, is better you name your timers so that you know which one you are cancelling, otherwise
with your code you are cancelling All timers and it will prevent you from using other timers efficiently. (to name
a timer, just change the 'null' field into a
string or something)
I've prepared an example you can try out. This will cancel the current timer and re-create a new one each time: