如何从Windows服务C#取消关机

前端之家收集整理的这篇文章主要介绍了如何从Windows服务C#取消关机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我启动了一个Windows服务(用C#.net2.0编写).

我想检测计算机何时关机/重启并取消它.
取消后我想做一些动作并重启windows.

我试过了,但它不起作用

using Microsoft.Win32;
partial class MyService: ServiceBase
{
    protected override void OnStart(string[] args)
    {
        SystemEvents.SessionEnding += new SessionEndingEventHandler(OnSessionEnding);
    }

    private void OnSessionEnding(object sender,SessionEndingEventArgs e)
    {
        e.Cancel = true;
        //Do some work...
    }
}

另一个测试:

partial class MyService: ServiceBase
{
    protected override void OnShutdown()
    {
        //Do some work...
        //base.OnShutdown();
    }
}
我不会惹这个. Windows会将您的进程视为挂起进程(除非您直接转到Win32 API).

我的建议是注意你正在关机,也许安排活动在启动时进行?

更新:
我想你会被困在这里,因为你的服务不知道为什么Windows会被关闭.你将拥有一个无限循环:

> Windows关闭火灾.>服务通知,中止关机,启动应用程序.>用户使用app继续关机.>窗口关闭火灾.>服务通告……>等

猜你在找的Windows相关文章