WaitableTimer
Publicado por Marc Palacios (2 intervenciones) el 22/11/2007 07:46:38
Saludos,
Estoy haciendo una aplicación nativa win32 con Visual Studio 2005 y quiero utilizar los "Waitable Timers" para temporizar algunos sucesos. Todo compila pefectamente, y las funciones no devuelven ningún código de error, pero los temporizadores no cuentan sino que finalizan immediatamente sin importar el tiempo que les haga contar.
Lo he probado en diferentes equipos con XP Home y Pro, con las librerías CRT dinámicas y estáticas, y se comporta siempre igual. He realizado un pequeño programa de test que muestra este comportamiento, a ver si estoy haciendo algo mal:
--------------------------------------------------------------------------------------------------------------
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0400
#include <windows.h>
int WINAPI WinMain (HINSTANCE hi, HINSTANCE hp, LPSTR lpCmdLine, int nShow)
{
HANDLE hTimer;
LARGE_INTEGER delay = {0};
DWORD res;
delay.LowPart = 5000*10000; /* 5 segundos */
hTimer = CreateWaitableTimer (NULL, FALSE, NULL); /* devuelve un handle */
res = SetWaitableTimer (hTimer, &delay, 0, NULL,NULL, FALSE); /* devuelve 1 */
res = WaitForSingleObject (hTimer, INFINITE); /* devuelve 0 inmediatamente */
res = CloseHandle (hTimer); /* devuelve 1 */
return 0;
}
--------------------------------------------------------------------------------------------------------------
Saludos y gracias,
Marc
Estoy haciendo una aplicación nativa win32 con Visual Studio 2005 y quiero utilizar los "Waitable Timers" para temporizar algunos sucesos. Todo compila pefectamente, y las funciones no devuelven ningún código de error, pero los temporizadores no cuentan sino que finalizan immediatamente sin importar el tiempo que les haga contar.
Lo he probado en diferentes equipos con XP Home y Pro, con las librerías CRT dinámicas y estáticas, y se comporta siempre igual. He realizado un pequeño programa de test que muestra este comportamiento, a ver si estoy haciendo algo mal:
--------------------------------------------------------------------------------------------------------------
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0400
#include <windows.h>
int WINAPI WinMain (HINSTANCE hi, HINSTANCE hp, LPSTR lpCmdLine, int nShow)
{
HANDLE hTimer;
LARGE_INTEGER delay = {0};
DWORD res;
delay.LowPart = 5000*10000; /* 5 segundos */
hTimer = CreateWaitableTimer (NULL, FALSE, NULL); /* devuelve un handle */
res = SetWaitableTimer (hTimer, &delay, 0, NULL,NULL, FALSE); /* devuelve 1 */
res = WaitForSingleObject (hTimer, INFINITE); /* devuelve 0 inmediatamente */
res = CloseHandle (hTimer); /* devuelve 1 */
return 0;
}
--------------------------------------------------------------------------------------------------------------
Saludos y gracias,
Marc
Valora esta pregunta


0