Так запустите поток и выполняйте в нем цикличную операцию.
1. Если надо завершить проверяйте переменную
while (isActiveThread)
{
// действие
}
2. Захотели остановить, введите Event ( к примеру ManualResetEvent ).
event.WaitOne(); // Будет ждать пока вы его не взведете в сигнальное состояние
или со временем
event.WaitOne(1000); // Ждем сигнального или 1 сек.