У меня есть COM-надстройка для офисных приложений, который выполняет операцию в фоновом режиме каждые 30 минут, используя операциюЧто происходит с таймерами, когда ПК просыпается?
System.Timers.Timer
Этого фон выполняет аутентификацию пользователя через подключение к Интернету, и у меня есть отчеты некоторых пользователей, аутентификация завершается неудачей, когда их ПК просыпается от сна. Я не могу воспроизвести это поведение самостоятельно, поэтому моя теория заключается в том, что когда компьютер просыпается, фоновая операция выполняется до восстановления соединения с Интернетом (предположительно, соединение было закрыто Windows, когда компьютер заснул).
В общем, если компьютер переходит в режим сна после периода бездействия, что происходит, когда ПК просыпается (в терминах Timers
)? Например, Timer
приостановлен во время сна, а затем возобновляется с установленным интервалом, когда компьютер просыпается (например, если Timer
находился на расстоянии 10 минут в промежутке, когда компьютер заснул, событие Timer.Elapsed
не срабатывает до 20 минут после ПК просыпается)? Выключено ли событие Timer.Elapsed
, чтобы оно срабатывало сразу после пробуждения ПК? Стоит ли Windows Timer
, когда компьютер переспал? Или, работает ли Timer
, пока компьютер спит, но поскольку интернет-соединение нарушено (предположительно), фоновая операция не может выполнять аутентификацию пользователя?
Вы можете подписаться на события силовой сети Windows, если это имеет смысл: [Get Sleep/Hibernate и Resume/Wakeup events в Visual Basic.NET] (http://stackoverflow.com/a/11598083/1115360). –
Произошла ли такая же проблема, если пользователь потерял соединение в течение минуты перед запуском таймера? –
Ваше приложение должно терпеть временную потерю соединения в любом случае по всей вероятности. Вам нужно что-то для решения таких вопросов, как повторение. – usr