Я пытаюсь создать серию микросервисов и в настоящее время работаю над базовым классом для них, используя консольное приложение. Net Core. Цель состоит в том, чтобы службы, развернутые в виде контейнеров Docker, могли отслеживать источник информации (Кафка, SQL и т. Д.) И затем активироваться, когда они находят свой триггер. Разработчик должен иметь возможность просто захватить этот базовый класс и поместить свои логи c на место, не беспокоясь о том, что логи c запускают его или любые другие базовые логи службы c.
Для этого я пытаюсь использовать многопоточность в базовом классе таким образом, чтобы пользователю класса не приходилось с этим сталкиваться, но служба реагировала и могла отслеживать / реагировать на внешние команды (например, возможность получить статус, отменить работу и т. д. c). К сожалению, похоже, что Microsoft пытается покончить с System.Threading в ядре. Net, поскольку я могу запускать их потоки, но не могу их остановить. Это исключает возможность отмены / приостановки работы, что, в свою очередь, исключает возможность завершения работы службы, поскольку я не могу остановить поток.
Я смотрел на Задачи, но они, похоже, предназначены для веб-разработки. , На самом деле большинство, если не вся информация, которую я нашел о многопоточности и микросервисах в. Net Ядро относится к созданию WebAPI в ASP. Net. Кроме этого я действительно не нашел много информации о том, как использовать System.Threading теперь, когда все элементы управления, кроме .Start, кажется, были удалены.
Я собираюсь взглянуть на систему, где у меня есть Поток размещает Задачу, затем попробуйте использовать элементы управления Задачей, чтобы посмотреть, смогу ли я отменить ее, а затем просто аккуратно отбросить поток (аналогично ответу здесь: do tnet ядро, эквивалентное Thread.Abort ) , Это неправильно, как будто я делаю башню зубочистки, которая может легко сломаться, однако мне нужно, чтобы базовый сервис контролировал нить; Я не хочу, чтобы я или другие люди постоянно проверяли токен в своей логике c, чтобы увидеть, должен ли поток быть закрыт.
Есть ли лучший способ понять, что я пытаюсь сделать здесь? Я искал несколько дней, но продолжаю сталкиваться с одним и тем же, и все дело в том, как сделать webapis с помощью Tasks, что совсем не похоже на то, что я пытаюсь сделать здесь; они останавливают основной лог c, а не работают независимо. Думаю, это раздражающий побочный продукт этого «все должно быть на сайте» настроения в отрасли. Не уверен, что я упускаю что-то очевидное, задавая неправильные вопросы, или это будет просто странная работа.