Я мог успешно справиться с (почти) такой же вопрос, как ваша делает следующее:
в классе: ServiceBase, который представляет ваш класс обслуживания, вы можете иметь:
public Class() //constructor, to create your log repository
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("YOURSource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"YOURSource", "YOURLog");
}
eventLog1.Source = "YOURSource";
eventLog1.Log = "YOURLog";
}
Теперь, реализации:
protected override void OnStart(string[] args)
{...}
И
protected override void OnStop()
{...}
Для обработки пользовательских команд вызовов:
protected override void OnCustomCommand(int command)
{
switch (command)
{
case 128:
eventLog1.WriteEntry("Command " + command + " successfully called.");
break;
default:
break;
}
}
Теперь, используйте это в приложении, в котором вы будете называть службы Windows:
Enum ссылаться на ваши методы: (помните, Услуги пользовательские методы всегда получают параметры int32 (от 128 до 255) в качестве параметров и используя Enum, вы упрощаете запоминание и управление своими методами.
private enum YourMethods
{
methodX = 128
};
Для вызова конкретного метода:
ServiceController sc = new ServiceController("YOURServiceName", Environment.MachineName);
ServiceControllerPermission scp = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, Environment.MachineName, "YOURServiceName");//this will grant permission to access the Service
scp.Assert();
sc.Refresh();
sc.ExecuteCommand((int)YourMethods.methodX);
Делая это, вы можете контролировать свои услуги.
Here вы можете проверить, как создать и установить службу Windows. More о методе ExecuteCommand.
Удачи вам!
ссылка не работает, и он швы просто рекламирует – user3800527 2017-09-15 13:28:46
@ user3800527 ... и по этой причине он получил множество голосов и принятие: - \. Спасибо за комментарий, однако, я обновил ссылку. – 2017-09-15 13:31:58
проголосовали за вас;) – user3800527 2017-09-15 13:33:12