我有一个简单的消息传递wpf应用程序,它监听wcf双工服务以接收消息。我编写了它,以便在网络出现故障时(或我断开LAN电缆),它会重新连接到运行良好的服务。
我的问题是,当Windows进入睡眠模式时,它无法尝试重新连接。我怀疑这是因为我的用于轮询网络的计时器进入休眠状态,因此轮询停止。
那么,有没有办法对“Windows已经唤醒”事件或类似事件作出反应?
答案 0 :(得分:2)
我终于找到了我想要的东西,一种简单的托管代码方式来响应系统恢复事件...
Microsoft.Win32.SystemEvents.PowerModeChanged += this.SystemEvents_PowerModeChanged;
private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Resume)
{
//Do Some processing here
}
}
这种方法相对于p / invoke的(主要)好处是ir可以在OS上运行(我不需要对Windows XP和Vista进行额外处理),当然,它更加明智!
答案 1 :(得分:0)
你见过http://www.codeproject.com/KB/system/OSEvents.aspx吗?
它是用C ++编写的,但我相信它只使用Win32API,所以使用P / Invoke你应该可以使用你的应用程序中的代码。 :)