Alternative a Thread.Sleep ()

Ogni N minuti vogliamo eseguire un elenco di attività. Quindi abbiamo creato un esecutore di compiti con a

do { DoWork(); }while(!stopRequested) 

Ora vogliamo fare una pausa tra i cicli di lavoro. Tutti sembrano pensare che Thread.Sleep () sia il diavolo. Ho visto parlare dell’uso di cose di Monitor / Eventi ma non abbiamo qualcun altro che ci dice di lavorare. Vogliamo solo fare cose ogni N minuti come un orologio.

Quindi c’è un’alternativa o ho trovato un uso valido di Thread.Sleep?

Qualcuno in un altro post ha menzionato WaitHandle.WaitOne () come alternativa ma non è ansible richiamarlo da un metodo non statico apparentemente? O almeno non posso perché ottengo un errore in fase di compilazione di ..

È richiesto un riferimento a un object per il campo, il metodo o la proprietà non statici “System.Threading.WaitHandle.WaitOne (System.TimeSpan)”