加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:38:22 所属栏目:Windows 来源:网络整理
导读:我启动了一个Windows服务(用C#.net2.0编写). 我想检测计算机何时关机/重启并取消它. 取消后我想做一些动作并重启windows. 我试过了,但它不起作用 using Microsoft.Win32;partial class MyService: ServiceBase{ protected override void OnStart(string[] ar
我启动了一个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继续关机.>窗口关闭火灾.>服务通告……>等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读