暂停/恢复PC时,使Windows服务停止并正常启动的正确方法是什么?

Ben*_*est 7 .net c# windows-services power-state

我需要在PC关机进入挂起模式时停止我们的Windows服务,并在PC再次恢复时重新启动它.这样做的正确方法是什么?

Ale*_*ici 7

您应该重写ServiceBase.OnPowerEvent方法.

protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
    if (powerStatus.HasFlag(PowerBroadcastStatus.QuerySuspend))
    { 

    }

    if (powerStatus.HasFlag(PowerBroadcastStatus.ResumeSuspend))
    {

    }
    return base.OnPowerEvent(powerStatus);
}
Run Code Online (Sandbox Code Playgroud)

PowerBroadcastStatus枚举解释电源状态.此外,您还需要将ServiceBase.CanHandlePowerEvent属性设置为true.

protected override void OnStart(string[] args)
{
    this.CanHandlePowerEvent = true;
}
Run Code Online (Sandbox Code Playgroud)

  • 您是否有任何理由根据此http://referencesource.microsoft.com/#System.ServiceProcess/System/ServiceProcess/PowerBroadcastStatus.cs使用HasFlag检查枚举,它是否未标记标志? (2认同)