2011-11-09 128 views
2

我有一个简单的消息传递wpf应用程序,它监听一个wcf双工服务来接收消息。我已经编码它,如果网络发生故障(或者我断开LAN电缆),它会重新连接到运行良好的服务。如何才能对从wpf应用程序中的睡眠模式唤醒的窗口做出反应?

我的问题是,当Windows进入睡眠模式时,它无法尝试重新连接。我怀疑这是因为我的轮询网络计时器进入睡眠状态,因此轮询停止。

那么,有没有一种方法来应对一个“Windows已经苏醒”事件或类似的?

回答

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的(主要)的好处是,红外线可以跨操作系统使用(我不需要额外的Windows XP操作系统& Vista),当然,它更有意思!

相关问题