Что для меня хорошо, так это наличие в моем сервисе супервизорного потока, который опрашивает таблицу базы данных на предмет команд и, в свою очередь, контролирует рабочие потоки.Супервизор также записывает состояние обратно в другую таблицу в базе данных.
Приложение контроллера пользовательского интерфейса опрашивает таблицу состояния и записывает команды в таблицу команд.Когда служба отвечает на команды, она выводит результаты обратно в таблицу состояния, предоставляя пользователю положительный отзыв.
Я также использую третью таблицу в качестве очереди операций, в которую рабочие потоки записывают и отображаетконтроллер, чтобы пользователь мог видеть, что происходит.Ограничьте размер таблицы активности, чтобы контроллер не всегда работал.
Защитите таблицы с транзакциями, и это может долго выполняться без присмотра.