Вы не можете перезапустить поток после завершения его выполнения. Вы можете начать новый поток или использовать pool of worker threads, которые запущены и продолжают работать, и ищут задачи для запуска, а затем снова спать.
Если задачи, которые вы хотите вывести из строя, относительно недолговечны, и вам необходимо их часто запускать, используя команду ThreadPool.
Если вы ориентируетесь новую версию платформы .NET, что лучше рассмотреть возможность использования новых async функций в сочетании с Tasks API как он обеспечивает более высокий уровень абстракции, чем просто с помощью ThreadPool непосредственно в очереди единиц работы.
Однако, если вы хотите сделать фоновый поток ожидающим, как в шаблоне производителя-потребителя, тогда вы, возможно, можете использовать ManualResetEvent или Semaphore и попросите свой поток ждать, пока объект станет сигналом. Когда событие сигнализируется, поток может возобновиться, и потребляет, что бы он ни потреблял, а затем снова ложиться спать, пока не появится больше дел.
Если вы хотите приостановить и возобновить поток, вам нужно будет использовать объект синхронизации, например. мьютекс, и проверите проверку потока в соответствующих точках, чтобы увидеть, нужно ли делать перерыв. – HABO