Вы не делаете ничего плохого.
Для атрибута DateTime
Azure AD B2C читает и пишет:
Значение «метаданных» помогает в сериализации значения атрибута.
Можно использовать Очереди Таймера (http://msdn.microsoft.com/en-us/library/ms686796.aspx). Они не требуют HWND.
Можно использовать SetTimer для установки таймера, затем поймать сообщение WM_TIMER в цикле сообщения.
Пример:
//Установите таймер для истечения за 10 секунд
SetTimer (hwnd, IDT_TIMER1, 10000, (TIMERPROC) ПУСТОЙ УКАЗАТЕЛЬ);
... затем в цикле сообщения:
переключатель (wParam)
{
case IDT_TIMER1:
// Boom goes the dynamite
Вы можете также decleare функция типа TIMERPROC и иметь это быть названными, когда таймер истекает, если Вы не хотите делать обработку цикла сообщения.
Можно отправить основному потоку сообщения WM_TIMER. lParam для сообщения является адресом функции обратного вызова, или можно оставить это ПУСТЫМ и обработать его сами в насосе сообщения.
В этом примере мы отправляем таймер на насос сообщения потока, нет никакого требования, чтобы связать окно с таймером.
UINT timer;
VOID CALLBACK Timer(HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
)
{
KillTimer(0, timer);
}
timer=SetTimer(0, // window handle
0, // id of the timer message, leave 0 in this case
10000, // millis
Timer // callback
);
// pump messages
while (GetMessage) etc...
Обратный вызов Таймера назовет DispatchMessage. Этот вопрос напомнил мне о недавнем ОНТАРИО.
Вместо того, чтобы использовать таймеры UI (даже при том, что можно использовать Нулевой системный дескриптор окна как показано г-ном, С 1800 ИНФОРМАЦИЕЙ) можно использовать ядро waitable объекты - таймеры. Посмотрите CreateWaitableTimer в документах API. Их можно затем ожидать - при использовании WaitForSingleObject или WaitForMultipleObjects, и т.д., который особенно полезен, если это уже, как Ваш сервис ожидает внешних событий.
Если это не ясно из той первой ссылки, функция SetWaitableTimer может связать стандартную программу завершения (пользовательский обратный вызов) с таймером. Не забудьте использовать... Исключая версиями WaitForMultipleObjects (и т.д.). так, чтобы поток был в "alertable" состоянии.
В одном из Ваших комментариев Вы сказали, что "... сервис обрабатывает материал в других потоках, я просто должен проверить состояние нескольких файлов каждую секунду".
Опрос не является оптимальным способом проверить состояние файла и окажет негативное влияние на производительность системы. В то время как существуют (иногда) проблемы, делающие это по сетям, необходимо проверить http://msdn.microsoft.com/en-us/library/aa364417 (По сравнению с 85) .aspx или http://msdn.microsoft.com/en-us/library/aa365261 (По сравнению с 85) .aspx для того, как сделать это и http://blogs.msdn.com/oldnewthing/archive/2006/01/24/516808.aspx для того, почему Вы должны.
Вы просто пытаетесь "проснуться" время от времени, чтобы сделать некоторую работу? Можно всегда использовать Сон ().
Кроме того, у меня обычно есть поток, который находится в некоторое время (1 == 1) цикл со сном внутри. Там я могу проверить на запрос завершения работы и другое misc обслуживание. Вы могли использовать ту систему для щекотки события или взаимного исключения для рабочего потока в приложении.