я ниже код из http://tech.einaregilsson.com/2007/08/15/run-windows-service-as-a-console-program/Как получить уведомление, когда служба остановки просил
При работе в режиме консоли, я хотел бы получать уведомления, когда услуга предлагается прекратить, а не ждать ввода пользователя. (Я имею в виду, что здесь пользователь запросил остановить программу с помощью Ctrl + C или закрыв консоль)
Это тривиально, что при работе в качестве службы OnStop вызывается запрос на остановку, но как я могу реализовать обходное решение, чтобы я мог также быть уведомленным при работе в режиме консоли.
Итак, есть ли какие-либо события, на которые я могу подписаться, чтобы получать уведомления или какую-либо функцию-член и т. Д.?
Заранее спасибо.
С наилучшими пожеланиями,
-victor
using System;
using System.ServiceProcess;
public partial class DemoService : ServiceBase
{
static void Main(string[] args)
{
DemoService service = new DemoService();
if (Environment.UserInteractive) // Console mode
{
service.OnStart(args);
Console.WriteLine("Press any key to stop program");
Console.Read();
service.OnStop();
}
else
{
ServiceBase.Run(service);
}
}
public DemoService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down
//necessary to stop your service.
}
}
Вы можете использовать шаблон, подобный сторожевому плуту, я думаю. Раньше не работал с этим материалом. – Warty