Garth J Lancaster
Я не уверен, что знаю, что вы ищете ... ты можешь :-
а) отправить пользовательские команды для программы Службы Windows через ServiceController.Метод executecommand
const int DoSomething = 666;
service.ExecuteCommand(DoSomething);
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
Это можно сделать во внешней программе, например, в консольном режиме. Служба реализует/переопределяет базу служб.OnCustomCommand реагировать ..
protected override void OnCustomCommand(int command)
{
if (command == DoSomething)
{
// ...
}
}
б) иметь в своей службе "приемник" (именованные каналы, tcp/ip), который получает "сообщение" из внешнего источника и выполняет что-то вроде обработки "задачи"
в) вы можете иметь сервис, построенный с помощью кварца.Например, сеть, которая запускает "задачи", используя все виды спецификаций планирования, например спецификации типа cron
но, как вы уже написали, Нет, вы не можете "вызвать метод в службе windows" - возможно, вам нужно обновить свой вопрос и немного уточнить свои требования
OmGanesh
@Гарт,
У меня есть та же проблема, что и при запуске длительной задачи в фоновом режиме по запросу пользователя из asp.net веб-приложение MVC.
Я полностью потерян из-за обилия статей в интернете с опциями (Quartz, Hangfire, Named Pipes, Azure Jobs, ...). Я думал, что службы windows-это мое лучшее решение, поскольку существующий проект уже имеет одну службу windows, работающую каждые 4 часа.
Мое требование состоит в том, чтобы создать еще один прослушиватель/метод (как бы мы его ни называли), куда я могу отправить сообщение из своего веб-приложения по запросу пользователей. Этот метод будет в основном выполнять действия, основанные на таблице БД (реальная задача будет выполнена на основе флага таблицы), поэтому мне просто нужно отдать приказ моему сервисному методу проверить запись БД для выполнения новой задачи)
Примечание: требование заключается в том, что может быть одновременный вызов сервиса от разных веб-пользователей одновременно.
Ваши комментарии и/или справочные статьи будут высоко оценены !!!