I ve read your post a bit fast so maybe I m missing something but I think the problem comes from this line:
in your UpdateTimer method you have:
FCurrentTime = MilliSecs() - FStartTime
when you resume you do FStartTime = Millisecs()
and thus when calling UpdateTimer, MilliSecs() - FStartTime is equal to 0
and your if statement (If FCurrentTime - FLastTickTime => FInterval Then) is false until you ve catched back the time the Timer has been alive...
(and just a small, very small remark, you can replace the following:
in your UpdateTimer method you have:
FCurrentTime = MilliSecs() - FStartTime
when you resume you do FStartTime = Millisecs()
and thus when calling UpdateTimer, MilliSecs() - FStartTime is equal to 0
and your if statement (If FCurrentTime - FLastTickTime => FInterval Then) is false until you ve catched back the time the Timer has been alive...
(and just a small, very small remark, you can replace the following:
frame:+1 If frame > 9 Then frame = 0by:
frame = (frame + 1) Mod 10)