Предполагая, что ваша служба имеет непрерывный цикл, который проверяет данные, добавьте проверку во внешний источник для команд паузы / продолжения. Этот источник может представлять собой очередь сообщений, например MSMQ, или таблицу базы данных.
Я реализовал что-то подобное, благодаря тому, что моя служба постоянно проверяла таблицу на наличие команд и сообщала о своем состоянии в другой таблице. Когда он получает команду запуска, он запускает цикл обработки в другом потоке. Команда stop заставляет его сигнализировать потоку о постепенном выходе. Сервисное ядро никогда не останавливается.
Пользователь взаимодействует через отдельное приложение с пользовательским интерфейсом, который позволяет ему просматривать состояние службы и отправлять команды. Поскольку приложение осуществляет управление через базу данных, оно не должно запускаться на той же машине, на которой работает служба.