C/Visual C - WaitableTimer

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:WaitableTimer

Publicado por Nelek (816 intervenciones) el 23/11/2007 09:13:10
Has pensado en la posibilidad de usar la funcion de sleep y un bucle ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:WaitableTimer

Publicado por Marc Palacios (2 intervenciones) el 26/11/2007 08:22:39
Hola Nelek ,

Gracias por la respuesta. Sleep() es una solución posible, igual que usar SetTimer() y el mensaje WM_TIMER, pero me gustaría saber por qué no funciona un mecanismo que está documentado y debería funcionar. En mi caso, el WaitableTimer es más adecuado ya que el intervalo es para un bucle de animación, en el que el tiempo que tarda en generarse un frame es indefinido y debo sincronizar desde el inicio de un frame hasta el inicio del siguiente.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:WaitableTimer

Publicado por Nelek (816 intervenciones) el 29/11/2007 14:07:15
Lo siento pero nunca he trabajado con el WaitableTimer asi que no te puedo ayudar. Si sabes ingles, pasate por www.codeproject.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar