У меня есть консольное приложение ядра .net, которое размещается как служба Windows.
Я хочу поймать событие, если пользователь выходит из системы / выключает компьютер.
Я нашел способы перехватить это событие в .net framework ( здесь & здесь ).
Но я не могу понять, как этого добиться в ядре .net.
Для создания сервиса я использую класс "ServiceBase". Пример кода приведен ниже:
public class MyService : ServiceBase
{
readonly string LogPath = "D:\\TestAppService.txt";
#region Constructors
public MyService()
{
this.CanShutdown = true;
}
#endregion
#region Protected Functions
protected override void OnStart(string[] args)
{
//your code here
// call the base class so it has a chance
// to perform any work it needs to
base.OnStart(args);
}
protected override void OnStop()
{
//your code here
// Call the base class
base.OnStop();
}
protected override void OnShutdown()
{
using (StreamWriter sw = File.AppendText(LogPath))
{
sw.WriteLine("shutdown == true");
}
//your code here
base.OnShutdown();
}
#endregion
}
Вызываются методы OnStop и OnStart.
но когда я выключаю компьютер, мой метод OnShutdown не вызывается.