none
关于Windows10服务ServiceBase的OnShutdown OnPowerEvent例程 RRS feed

  • 问题

  • 之前开发服务的时候记得用的是OnShutdown例程就可以hook到关机事件

    但是自从引入fast start up后好像就不会再走到这里面了

    google了下关机的时候走的都是S4

    那问题来了,如果我想在关机的时候做些事情,要怎么去hook或者注册回调呢?

    2016年9月21日 8:44

全部回复

  • 是否你可以上传你的代码到百度云之类,我们下载分析看看?

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月21日 8:46
    版主
  • 整个代码不太方便放上来

    而且只是在模板的基础上

    设定CanShutdown为true

    后再重写

    ServiceBase.OnShutdown

    2016年9月21日 11:03
  • 你好,

    你可以贴一下简单的代码,可以重现你的问题的代码,做一下简单的小的console 项目。

    Best regards,

    Cole Wu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年10月11日 3:24
    版主
  •     public partial class Service1 : ServiceBase
        {
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
            }
    
            protected override void OnStop()
            {
            }
    
            protected override void OnShutdown()
            {
                //shutdown when system enter S5
                //OS fast boot need disable
                //wirte to file for logging
                base.OnShutdown();
            }
    
            protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
            {
                if(powerStatus == PowerBroadcastStatus.Suspend)
                {
                    //S4 hibernate
                    //wirte to file for logging
                }
                return base.OnPowerEvent(powerStatus);
            }
    
        }

    2016年10月16日 8:15
  • Hi,

    >>但是自从引入fast start up后好像就不会再走到这里面了

    对于这一点我不知道是不是对的。也许走到了,我们不知道.

    ServiceBaseOnShutdown 方法 该方法于系统即将关闭时执行。 该方法指定应在系统即将关闭前执行的处理。 

    所以我觉得应该是走到了?

    为什么会走S4呢?

    ServiceBaseOnPowerEvent 方法 该方法于计算机电源状态更改时执行。 这适用于膝上型计算机进入挂起模式时的情况,该模式不同于系统关闭。

    他是不等同系统关闭模式的.

    Base Regards,

    Hart


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. Click HERE to participate the survey.

    2016年10月18日 5:52
    版主
  • 对于这一点我不知道是不是对的。也许走到了,我们不知道.

    ServiceBaseOnShutdown 方法 该方法于系统即将关闭时执行。 该方法指定应在系统即将关闭前执行的处理。 

    所以我觉得应该是走到了?

    这个肯定是没有走到,我用的文件来打log,走到了肯定要log出来

    另外把os的faststartup关掉就可以走到了,走的也是S5

    前面走S4就是为了把部分资源放到disk中加快boot时间

    2016年10月19日 6:00
  • 根据你的测试,那应该是被改变,可能后续的文档没有及时更新。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. Click HERE to participate the survey.

    2016年10月20日 7:01
    版主