¿hay una razón que usted está utilizando un Threading.Timer contra el System.Timer? Un threading.timer el método de CheckForPastDue está ejecutando en otro hilo de rosca entonces el que lo creó. esto causa a veces las ediciones para la cosa simple que usted está intentando lograr. Tenía una edición similar y usar el System.Timer trabajó para mí.