ma i timers basati su System.Timers non dovrebbero essere timers in multithreading?

nel programma ho due timers:

uno "principale" basato su Windows.Forms (genera evento Tick) che ad intervalli regolari esegue tutta una serie di operazioni sequenziali

uno secondario, che ad intervalli regolari controlla il verificarsi di un evento secondario

il timer secondario lo ho basato su System.Timers (genera evento elapsed) pensando di avere ottenuto due timers che lavorano in multithreading

Ma se nel codice controllato dal timer secondario io inserisco per prova un:

Thread.Sleep(20000)

mi si blocca tutto per 20 secondi... nel senso che si interrompe anche la sequenza di codice controllata dal timer primario

né posso inserire un

Thread.CurrentThread.Sleep(20000)

perché mi dà errore

ma allora il secondo timer non lavora in multithreading, cioè con un codice la cui sequenza è completamente "distaccata" da quello principale e che in caso di CPU multicore "dovrebbe" essere eseguito in parallelo?