No estoy realmente escribiendo una aplicación de reloj de alarma, pero ayudará a ilustrar mi pregunta.Aplicación de reloj despertador en .Net
Digamos que tengo un método en mi aplicación, y quiero que este método se llame cada hora en la hora (por ejemplo, a las 7:00 p.m., 8:00 p.m., 9:00 p.m., etc.). I podría crear un temporizador y configurar su intervalo en 3600000, pero eventualmente esto se saldría de sincronización con el reloj del sistema. O I podría utilizar un while()
bucle con Thread.Sleep(n)
para comprobar periódicamente la hora del sistema y llamar al método cuando se alcanza el tiempo deseado, pero tampoco me gusta esto (Thread.Sleep(n)
es un gran olor a código para mí).
Lo que estoy buscando es algún método en .Net que me permita pasar en un futuro objeto DateTime y un método delegado o manejador de eventos, pero no he podido encontrar tal cosa. Sospecho que hay un método en la API de Win32 que hace esto, pero tampoco he podido encontrarlo.
¿Está buscando rodar su propio Quartz.Net? http://quartznet.sourceforge.net/ –
@Austin: no, solo estoy buscando un método simple como el que describí en el último párrafo, sin tener que mover el mío o usar un componente de terceros. – MusiGenesis
El programador de Windows incorporado tiene una API accesible a través de PInvoke http://www.pinvoke.net/default.aspx/netapi32/NetScheduleJobAdd.html – xcud