C# 自动和自动之间的区别;恢复Windows服务的挂起模式
据 ResumeAutomic:计算机已自动唤醒以处理事件 注意:如果系统在广播ResumeSuplate Automatic后检测到任何用户活动,它将广播ResumeSuplate事件,让应用程序知道它们可以恢复与用户的完全交互 ResumeSupspend:系统在挂起后已恢复运行 这是否意味着当计算机从睡眠中醒来时调用“ResumeAutomic”,当用户在输入凭据后登录时调用“ResumeSupspend”? 我正在使用tcp套接字与服务器通信。因此,为了在系统从休眠状态恢复时重新连接到服务,我有以下代码C# 自动和自动之间的区别;恢复Windows服务的挂起模式,c#,.net,windows-services,C#,.net,Windows Services,据 ResumeAutomic:计算机已自动唤醒以处理事件 注意:如果系统在广播ResumeSuplate Automatic后检测到任何用户活动,它将广播ResumeSuplate事件,让应用程序知道它们可以恢复与用户的完全交互 ResumeSupspend:系统在挂起后已恢复运行 这是否意味着当计算机从睡眠中醒来时调用“ResumeAutomic”,当用户在输入凭据后登录时调用“ResumeSupspend”? 我正在使用tcp套接字与服务器通信。因此,为了在系统从休眠状态恢复时重新连接到服
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
Logger.Log("Power status is : " + powerStatus);
if (powerStatus == PowerBroadcastStatus.ResumeAutomatic)
{
ConnectionWatchdog.ReConnect();
}
return base.OnPowerEvent(powerStatus);
}
但我观察到枚举值是随机的。下面是3个不同唤醒时间的3条不同记录道
20150525#094449::电源状态为:暂停
20150525#094716::电源状态为:ResumeSupspend
20150525#103431::电源状态为:暂停 20150525#103525::电源状态为:ResumeSupspend 20150525#103525::电源状态为:恢复自动
20150525#103558::电源状态为:暂停 20150525#103835::电源状态为:ResumeAutomatic它应该如何工作 (实践中并非如此——见下文。) 自动恢复 此消息始终在计算机睡眠后恢复时发送 恢复暂停 计算机在睡眠后已恢复,Windows认为有用户在场,即有人坐在计算机前面。当a)唤醒是由人与人之间的交互(某人按下电源按钮、按键、移动鼠标等)引起时,发送此消息;或b)由于唤醒计时器,机器自动唤醒后第一次出现人机交互 要直接回答您的问题,用户第一次与计算机交互时会发送ResumeSupspend。这可能是输入密码来解锁它,但不一定要输入密码。如果用户只是晃动鼠标,仍然会发送ResumeSupspend。 总结如下:
它实际上是如何工作的
我很不幸,不得不深入到Windows对电源管理、配置文件等的支持的兔子洞里。Vista时代的东西令人沮丧,因为它基于质量和周到的设计,但实现和文档都不太到位,而且从未被修复。还有许多其他琐碎的问题,我在这里没有讨论过。这有点遗憾。谢谢你的详细解释。由于我从未在任何地方看到任何与此相关的文档,我想知道您是如何得出结论的。你有没有和微软的技术支持人员谈过,或者你有没有深入研究过windows的内部代码?@Fadi:微软从来没有参与过,不过我当然想看看源代码!只需要数周(数周)的痛苦、系统的测试。我曾参与过一款严重依赖Windows电源配置文件、睡眠/空闲到睡眠行为等的产品。当您将Windows错误、固件错误、驱动程序错误和文档错误/不足结合在一起时,疯狂在于等待。