为什么这个event 'SystemEvents_PowerModeChanged'在Windwos Service 里面不响应

明缘 2010-12-24 10:21:45
开发环境: VS2005 Winxp
有如下代码:
public Form1()
{
InitializeComponent();
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
}

private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Suspend)
{
................
}
if (e.Mode == PowerModes.Resume)
{

}
}
在WindForm下好用,可以监测到 本地机器的standby resume 状态。
但是将这段 代码 移植到 Windows Service后 根本不会响应这个事件'SystemEvents_PowerModeChanged'。
请知道的给解惑一下。如何修改 Windows Service下的代码 可以监测到 pc standby 的状态呢。
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2010-12-24
  • 打赏
  • 举报
回复
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
this.CanHandlePowerEvent = true;
}
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
switch (powerStatus)
{
case PowerBroadcastStatus.QuerySuspend: break;
case PowerBroadcastStatus.PowerStatusChange: break;
}
return base.OnPowerEvent(powerStatus);
}
...
}
bloodish 2010-12-24
  • 打赏
  • 举报
回复
这个事件是无法通知到服务程序的,你可以换用
System.Management.ManagementEventWatcher
Win32_PowerManagementEvent 事件

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧