I completely understand you and I did your test befor posting above and your example is happening as you said.
That is because you should not use IsValid because you will not get what you wanted. IsTimerActiveByHandle is what you want, try it.
Also, Timer gets invalidated automatically after running for X secs. No need to call ClearAndInvalidateTimerByHandle unless it is not running yet or it is in loop.