我启动了一个 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 关机触发。
- 服务通知、中止关闭、启动应用。
- 用户使用应用程序继续关机。
- 窗口关闭触发。
- 服务通知......
- 等
关于c# - 如何从 Windows 服务 C# 取消关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720125/