Como pausar / suspender um thread e continuar?

Estou fazendo um aplicativo em c # que usa um winform como a GUI e um thread separado que está sendo executado em segundo plano automaticamente mudando as coisas. Ex:

public void Run()
{
    while(true)
    {
        printMessageOnGui("Hey");
        Thread.Sleep(2000);
        // Do more work
    } 
}

Como eu faria para pausar em qualquer lugar do loop, porque uma iteração do loop leva cerca de 30 segundos. Então, eu não gostaria de pausá-lo depois de terminar um loop, quero pausá-lo a tempo.

questionAnswers(3)

yourAnswerToTheQuestion