2010-08-13 2 views
1

я ниже код из 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. 
    } 
} 
+0

Вы можете использовать шаблон, подобный сторожевому плуту, я думаю. Раньше не работал с этим материалом. – Warty

ответ

Смежные вопросы