Как я могу реагировать на окна, просыпающиеся из спящего режима в приложении wpf? - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть простое приложение wpf для обмена сообщениями, которое прослушивает дуплексный сервис wcf для получения сообщений.Я запрограммировал его так, чтобы в случае сбоя в сети (или отсоединения сетевого кабеля) он снова подключился к службе, которая работает хорошо.

Моя проблема в том, что когда Windows переходит в спящий режим, она не может попытаться переподключиться.Я подозреваю, что это потому, что мой таймер опроса сети переведен в спящий режим, и поэтому опрос останавливается.

Итак, есть ли способ отреагировать на событие «Windows проснулся» или подобное?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Я наконец-то нашел то, что хотел, простой управляемый код для реакции на событие возобновления системы ...

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) и, конечно, он более удобен!

0 голосов
/ 09 ноября 2011

Вы видели http://www.codeproject.com/KB/system/OSEvents.aspx?

Он написан на C ++, но я считаю, что он использует только Win32API, поэтому, используя P / Invoke, вы сможете использовать код в своем приложении. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...