Vamos a explicar como sincronizar un servicio de .NET con el minutero oficial.
Cuando creamos un servicio, normalmente le incorporamos un «reloj» (timer) interno para que sus ciclos de ejecución sean cada 30 o 60 segundos, repitiendo su proceso inicial en estos intervalos.
Por tanto cuando se arranca el servicio, ya sea manual o automáticamente, el reloj interno comienza con sus ciclos según el momento en el que arrancase, es decir, si el temporizador comenzo en el segundo 17 de un minuto, los ciclos se repetirán todos los segundos 17 de cada minuto.
Bien por que seamos unos maniáticos o bien porque los requerimientos de nuestro programa lo impongan, podemos querer que el temporazador se sincronice perfectametne con el minutero oficial, y sus ciclos comiencen siempre en el segundo 0 de cada minuto.
Sincronizar un Servicio con VB.NET
Es tan simple como realizar la siguiente función de sincronizado y llamarla al arrancar el servicio o en cada ciclo del temporizador si no se usan hilos o tareas (Threads o Tasks) y se quiere evitar que algún proceso remolón retarde el ciclo.
Public Sub Sincronizar() Dim minuto As String = Date.Now.Minute.ToString() While (minuto = Date.Now.Minute.ToString) System.Threading.Thread.Sleep(1000) End While End Sub
Sincronizar un Servicio con C#
La misma función pero codificada con C#:
public void Sincronizar() { string minuto = DateTime.Now.Minute.ToString(); while (minuto == DateTime.Now.Minute.ToString()) { System.Threading.Thread.Sleep(1000); } }
1861 visitas.