在wpf应用程序中,我如何对从睡眠模式唤醒的窗口做出反应?

本文关键字:窗口 唤醒 模式 应用程序 wpf | 更新日期: 2023-09-27 18:13:53

我有一个简单的消息传递wpf应用程序,它侦听wcf双工服务来接收消息。我已经对它进行了编码,以便如果网络出现故障(或者我断开了局域网电缆),它会重新连接到工作良好的服务。

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

那么,是否有一种方法可以对"Windows已唤醒"事件或类似事件做出反应?

在wpf应用程序中,我如何对从睡眠模式唤醒的窗口做出反应?

我终于找到了我想要的,一个简单的,托管的代码方式来响应系统恢复事件…

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),当然,它更简洁!

你看过http://www.codeproject.com/KB/system/OSEvents.aspx吗?

它是用c++编写的,但我相信它只使用Win32API,所以使用p/Invoke你应该能够在你的应用程序中使用代码。:)