Монотонный WaitableTimer в C # - PullRequest
2 голосов
/ 08 июля 2010

Есть ли монотонный WaitableTimer, доступный в C # или даже в Win32, который я мог бы обернуть?

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

Единственный источник монотонных часов, который я нашел доступным в Windows XP, это GetTickCount(), но я надеялся, что мне не придется писать свой собственный таймер, используя это.

1 Ответ

3 голосов
/ 08 июля 2010

SetWaitableTimer () поддерживает два способа установки времени выполнения. Положительное значение устанавливает абсолютное время, на него будут влиять часы. Отрицательное значение устанавливает относительное время, на него не влияют часы. Вы хотите последнее.

Часы не влияют на таймер .NET. Не меняется даже часовой пояс или DateTime.Now. Проверьте CultureInfo.ClearCachedData (). Использование System.Threading.Timer должно быть хорошей управляемой заменой.

...