¿Cómo puedo generar un evento en un momento específico? Por ejemplo, supongamos que quiero generar una alerta a las 8:00 a.m. que me informe que es a las 8:00 a.m. (o un evento que me informe de la hora actual en cualquier momento dado).¿Cómo puedo generar una alerta en un momento específico en C#?
Respuesta
utilizar la clase System.Threading.Timer:
var dt = ... // next 8:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));
El delegado callback
se llamará la próxima vez que son las 8:00 de la mañana y cada 24 horas a partir de entonces.
Consulte this SO question cómo calcular la siguiente aparición de las 8:00 a.m.
private void Run_Timer()
{
DateTime tday = new DateTime();
tday = DateTime.Today;
TimeSpan Start_Time = new TimeSpan(8,15,0);
DateTime Starter = tday + Start_Time;
Start_Time = new TimeSpan(20, 15, 0);
DateTime Ender = tday + Start_Time;
for (int i = 0; i <= 23; i++)
{
Start_Time = new TimeSpan(i, 15, 0);
tday += Start_Time;
if (((tday - DateTime.Now).TotalMilliseconds > 0) && (tday >= Starter) && (tday <= Ender))
{
Time_To_Look = tday;
timer1.Interval = Convert.ToInt32((tday - DateTime.Now).TotalMilliseconds);
timer1.Start();
MessageBox.Show(Time_To_Look.ToString());
break;
}
}
}
Podemos usar esta función para conseguir el temporizador corriendo para tiempos o cambiar para que se ejecute en un momento determinado: D
Es obvio que la solución @dtb es mejor. – albertein
Pero también es obvio que usted no tuvo la idea de que una persona que hace la pregunta comprenda mejor su pregunta. Estoy de acuerdo en que me dio un formato para hacerlo en un momento específico del día, pero tuve que hacerlo funcionar en algunos condiciones no estáticamente en un cierto momento del día una vez que la mayoría del trabajo realizado en mi código es para ejecutar ese ciclo y establecer el tiempo para la siguiente parada del cronómetro. Si puede ver que no el número de líneas en ese – Mobin
¿La alerta deberán ser aportados por el programa? Un enfoque alternativo es usar un Scheduled Task (in Windows) para generar la alerta. Puede que tenga que escribir un pequeño programa que recoge toda la información de los archivos de datos de la aplicación principal, etc.
hay un par de los beneficios principales de utilizar este enfoque:
- Usted no tiene que escribir ningún código para admitir la característica. Usted hace uso de algo integrado en el sistema operativo. El ejemplo es para Windows, pero otros sistemas operativos tienen la misma función. Puede concentrar su esfuerzo de desarrollo y soporte en su propio código.
- Su aplicación principal no tiene que estar ejecutándose para que la tarea se dispare.
Elaborando la respuesta de dtb así es como lo implementé.
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent);
//first occurrence at
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);
if (DateTime.Now < dt)
{
var timer = new System.Threading.Timer(callback, null,
//other occurrences every 24 hours
dt - DateTime.Now, TimeSpan.FromHours(24));
}
}
private void ProcessTimerEvent(object obj)
{
MessageBox.Show("Hi Its Time");
}
- 1. ¿Cómo puedo iniciar una función en un momento específico en C++?
- 2. Iniciar la aplicación en un momento específico
- 3. ¿Cómo iniciar un BackgroundWorker en un momento específico?
- 4. ¿Cómo llamar a un método diariamente, en un momento específico, en C#?
- 5. Servicio de fondo desencadenante en un momento específico en Android
- 6. generar una alerta en el controlador de rieles sin redirigir
- 7. En C, ¿cómo puedo obtener un directorio específico?
- 8. ¿Cómo puedo generar una URL amigable en C#?
- 9. ¿Cómo puedo generar un evento mediante reflejo en .NET/C#?
- 10. ¿Cómo puedo generar un número pseudoaleatorio criptográficamente seguro en C#?
- 11. Cómo configurar un crontab para que se ejecute en un momento específico
- 12. Llamar a una función de JavaScript en un momento específico del día
- 13. ¿Cómo puedo generar un GUID en Vim?
- 14. ¿Cómo puedo generar una navegación en Middleman?
- 15. Realizar una acción diaria en un momento específico según la zona horaria local del usuario
- 16. ¿Cómo puedo ver un objeto con una alerta()
- 17. Cómo generar hilo en C#
- 18. Reproducir sonido en un momento específico mientras la aplicación está en segundo plano
- 19. ¿Cómo reverso un trozo específico de una confirmación en git?
- 20. Uso de Alarmmanager para iniciar un servicio en un momento específico
- 21. ¿Cómo puedo generar números aleatorios en Unqiue C#
- 22. ¿Cómo puedo generar un calendario de torneos en Ruby?
- 23. ¿Cómo puedo generar un código hash a partir de una matriz de bytes en C#?
- 24. ¿Cómo puedo generar una variable en una prueba de rspec?
- 25. ¿Cómo eliminar un par específico de un multimapa en C++?
- 26. Generar en C#
- 27. ¿Cómo se reproduce un sonido (alerta) en una aplicación java?
- 28. ¿Cómo puedo generar un archivo .pfx?
- 29. Generar una imagen enorme en C#
- 30. ¿Cómo puedo iniciar animaciones CSS3 en un lugar específico?
Sé que siguiendo el enlace que lo menciona, pero puede ser que desee para aclarar que esto es System.Threading.Timer y no System.Windows.Forms.Timer – McAden
¿funcionaría si doy el último 8.00 a partir de ahora? Entonces, ¿se da un número negativo? – Jaanus
@Jaanus No, acabo de probarlo y arroja una excepción. Si dt