#c# #wpf
#c# #wpf
Вопрос:
У меня есть простое приложение wpf для обмена сообщениями, которое прослушивает службу wcf duplex для получения сообщений. Я закодировал его так, что в случае сбоя сети (или я отключаю кабель локальной сети) он повторно подключается к службе, которая работает хорошо.
Моя проблема в том, что когда Windows переходит в спящий режим, ей не удается повторно подключиться. Я подозреваю, что это связано с тем, что мой таймер для опроса сети переведен в спящий режим, и поэтому опрос прекращается.
Итак, есть ли способ отреагировать на событие «Windows проснулась» или подобное?
Ответ №1:
Я наконец нашел то, что хотел, простой способ с управляемым кодом реагировать на событие возобновления работы системы…
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 работает во всех ОС (мне не нужна дополнительная обработка для Windows XP и Vista) и, конечно же, это более удобно!
Ответ №2:
Вы видели http://www.codeproject.com/KB/system/OSEvents.aspx ?
Он закодирован на C , но я полагаю, что он использует только Win32API, поэтому с помощью P / Invoke вы сможете использовать код в своем приложении. 🙂