C # Timer ou Thread.Sleep

Estou executando um serviço do windows e usando um loop e Thread.Sleep para repetir uma tarefa, seria melhor usar um método de timer?

Se sim, um exemplo de código seria ótimo

Atualmente, estou usando este código para repetir

int curMinute;
int lastMinute = DateTime.Now.AddMinutes(-1).Minute;

while (condition)
{
   curMinute = DateTime.Now.Minute;

   if (lastMinute < curMinute) {
         // do your once-per-minute code here
         lastMinute = curMinute;
   }

   Thread.Sleep(50000);      // sleeps for 50 seconds

   if (error condition that would break you out of this) {
       break;      // leaves looping structure
   }
}

questionAnswers(11)

yourAnswerToTheQuestion