Как получить уведомление при запросе остановки службы - PullRequest
1 голос
/ 13 августа 2010

Я получил код ниже от 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.
    }
}

1 Ответ

1 голос
/ 13 августа 2010

Я думаю, что вы ищете событие CancelKeyPress.Смотри http://msdn.microsoft.com/en-us/library/system.console.cancelkeypress.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...