Как приостановить / приостановить поток, а затем продолжить?

Я делаю приложение в C #, которое использует winform в качестве GUI и отдельный поток, который работает в фоновом режиме, автоматически меняя вещи. Пример:

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

Как бы я сделал это сделать паузу в любом месте цикла, потому что одна итерация цикла занимает около 30 секунд. Поэтому я не хотел бы ставить его на паузу после одного цикла, я хочу сделать это на время.

Ответы на вопрос(3)

Ваш ответ на вопрос