• Domingo 22 de Diciembre de 2024, 14:41

Autor Tema:  Esperar Xx Minutos Y Luego Lanzar Un Método  (Leído 1126 veces)

matiassaitam

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Esperar Xx Minutos Y Luego Lanzar Un Método
« en: Viernes 21 de Diciembre de 2007, 13:43 »
0
Buenas,

Estoy haciendo un programa donde el usuario debe ingresar una hora, y luego, cuando ocurra esa hora debo lanzar un método.

Estuve probando usar Thread.Sleep pero como el programa tiene una interfaz gráfica, al ejecutar ese método, la interfaz se congela (hasta que pase el tiempo especificado).

Ahora lo que estoy pensando es crear un hilo aparte para esa espera, entonces, si ejecuto un Sleep en ese nuevo Thread, no se congelaría la interfaz (que por supuesto debe estar operativa mientras sucede ese intervalo de tiempo especificado por el usuario).

Mi consulta es, ¿existe una forma mejor de hacer esto? ¿Cómo se llama lo que quiero hacer (¿Acaso esto es espera activa/pasiva?)?.

Desde ya muchas gracias por su tiempo.
Saludos.

 :hola:

matiassaitam

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Esperar Xx Minutos Y Luego Lanzar Un Método
« Respuesta #1 en: Sábado 22 de Diciembre de 2007, 03:01 »
0
Bien, a falta de respuesta aproveche a probar todo lo que se me ocurrió ...
Me parece que la forma más "limpia" o correcta de hacer lo que quería es utilizando la clase Timer de System.Threading (esta aclaración viene a que también existe una clase de igual nombre en System.Diagnostics y System.Windows.Forms).

A continuación el código relevante:

Código: Text
  1. System.Threading.Timer temporizador = new System.Threading.Timer(new TimerCallback(metodo), objetoParametro, tiempoEstipulado, new TimeSpan(-1));
  2.  

Donde metodo es el método que se quiere ejecutar (static void), objetoParametro son los parametros que le quiero pasar al método, tiempoEstipulado es una instancia de la clase TimeSpan que contiene el tiempo que se debe esperar para ejecutar el método, y el último parametro indica que solo debe ejecutarse una vez.

Si alguien conoce otra forma mejor aún, no dude en postearla.

Un saludo.

 :hola: