El problema que yo le veo, es estar mirando cada 100 milisegundos la hora
Lo lógico, ver la tarea más cercana y programar el timer para esa fecha. Llegada esa hora, mostrar alerta al usuario y reprogramar el timer para la siguiente fecha de aviso.
Edito: El código que ha de ejecutarse cada 100 milisegundos es demasiado extenso, debería ser muy pocas lineas, de lo contrario, puedes perder eventos, porque uno llegue cuando el anterior no se ha terminado, y en el peor de los casos, puede que esté en un evento que no hay tareas definidas, pero en el siguiente evento, que se pierde por solaparse con el primero, si puede haber tareas. No sé si queda claro o no....
Mira estos hilos:
http://www.clubdelphi.com/foros/show...t=recordatorio
y los que allí se menciona.
saludos