Mam dodatek COM dla aplikacji pakietu Office, które wykonuje operację w tle co 30 minut przy użyciu operacjiCo dzieje się z Timerami, gdy komputer budzi się ze snu?
System.Timers.Timer
tym tle wykonuje uwierzytelnianie użytkowników za pośrednictwem połączenia internetowego, a ja mam raporty z niektórych użytkowników, uwierzytelnianie kończy się niepowodzeniem, gdy ich komputery budzą się ze snu. Nie mogę odtworzyć tego zachowania osobiście, więc moja teoria mówi, że gdy komputer się budzi, operacja w tle jest wykonywana przed przywróceniem połączenia z Internetem (prawdopodobnie połączenie zostało zamknięte przez system Windows, gdy komputer poszedł spać).
Ogólnie rzecz biorąc, jeśli komputer przejdzie w stan spoczynku po okresie bezczynności, co się stanie, gdy komputer się obudzi (w znaczeniu Timers
)? Na przykład: Timer
został wstrzymany podczas snu, a następnie wznawia się w ustalonych odstępach czasu, gdy komputer się budzi (np. Jeśli Timer
było 10 minut przed przerwą, gdy komputer poszedł spać, zdarzenie Timer.Elapsed
nie zostanie uruchomione przed upływem 20 min. komputer budzi się)? Czy w kolejce znajduje się zdarzenie Timer.Elapsed
, które uruchamia się natychmiast po przebudzeniu komputera? Czy system Windows zatrzymuje komputer Timer
, gdy komputer przechodzi w tryb uśpienia? Lub czy komputer Timer
nadal działa, gdy komputer śpi, ale ponieważ połączenie internetowe jest zepsute (prawdopodobnie), operacja w tle nie może przeprowadzić uwierzytelniania użytkownika?
Możesz subskrybować zdarzenia zasilania systemu Windows, jeśli jest to przydatne: [Uzyskaj zdarzenia Sleep/Hibernate i Resume/Wakeup w Visual Basic.NET] (http://stackoverflow.com/a/11598083/1115360). –
Czy ten sam problem miałby miejsce, gdyby użytkownik utracił połączenie na minutę przed uruchomieniem timera? –
Twoja aplikacja musi mimo wszystko tolerować utratę połączenia tymczasowego z dużym prawdopodobieństwem. Potrzebujesz czegoś, z czym możesz sobie poradzić, na przykład spróbuj ponownie. – usr