Forums Últimos mensajes - Powered by IBM
 
Tags Palabras claves

Timer vs Sleep

21/02/2008 - 18:38 por Fuy | Informe spam
Hola, tengo una duda entendiendo un poco estos dos.

Viendo en la documentación de msdn2 encuentro sobre dos Timer, bueno
no se si sean el mismo aunque están en diferentes bibliotecas a esto
me refiero con lo siguiente:

System.Timers.Timer (1)
System.Threading.Timer ...(2)

(1) El componente Timer es un temporizador basado en servidor que
permite especificar un intervalo recurrente en el que se provoca el
evento Elapsed en la aplicación.

(2) Es un temporizador sencillo y de pequeño tamaño que utiliza
métodos de devolución de llamada, atendido por subprocesos del grupo
de subprocesos

Veo que es casi similares pero no iguales o sí?

Ahora, en donde entra la función Sleep??

System.Threading.Thread.Sleep

Todos manejan threads (hilos) pero que tan eficiente es ocuparlos?

Por ejemplo veo que usan Timer para cosas de respaldos o funciones
donde se tienen que estar checando periódicamente algo, pero
supongamos lo siguiente: quiero hacer una función que imprima un
mensaje con su fecha

public void imprimeMF()
{
DateTime date = DateTime.Now;
Console.WriteLine("La fecha es: {0}", date);
Thread.Sleep(1000);
}

Aquí entiendo que se crea un hilo y se duerme 1 segundo. Que
diferencias podría haber si ocupara un timer??? y cual tiene mejor
desempeño?

ok

ATTE
Fuy
 

Leer las respuestas

#1 Jesús López
21/02/2008 - 19:08 | Informe spam
Te faltan dos timers más :-):

System.Windows.Forms.Timer
System.Windows.Threading.DispatcherTimer (este es de WPF)

La diferencia entre Sleep y un timer es radical, son completamente
diferentes. Thread.Sleep hace que se pare la ejecución durante un tiempo
determinado, mientras que los timers hacen que se ejecute algo a intervalos
regulares de tiempo.

Por cierto Thead.Sleep no crea ningún hilo, lo que hace es suspender la
ejecución del hilo actual durante el tiempo especificado.

Podríamos decir que hay dos tipos de timers:

* Los que están pensados para ejecutarse en el hilo del interfaz de usuario.

Estos son el System.Windows.Forms.Timer y
System.Windows.Threadng.DispatcherTimer. El primero para aplicaciones
Windows Forms y el segundo para aplicaciones Windows Presentation
Foundation. Estos dos timers lanzan el evento tick en el hilo del interfaz
del usuario, lo que hace que sea seguro actuar sobre el interfaz de usuario
desde el procedimiento de evento.


* Los que se pueden ejecutar en un hilo cualquiera.

Estos son el System.Timers.Timer y el System.Threading.Timer. La diferencia
fundamental es que mientras Timers.Timer lanza eventos, Threading.Timer
llama a un delegado. Otra diferencia es que Timers.Timer crea un nuevo hilo
para llamar al evento y Threading.Timer obtiene un hilo del Thread Pool para
llamar al delegado. Threading.Timer es ligéramente más eficiente que
Timers.Timer, pero este último tiene un poco más de funcionalidad y
precisión.






"Fuy" escribió en el mensaje
news:
Hola, tengo una duda entendiendo un poco estos dos.

Viendo en la documentación de msdn2 encuentro sobre dos Timer, bueno
no se si sean el mismo aunque están en diferentes bibliotecas a esto
me refiero con lo siguiente:

System.Timers.Timer (1)
System.Threading.Timer ...(2)

(1) El componente Timer es un temporizador basado en servidor que
permite especificar un intervalo recurrente en el que se provoca el
evento Elapsed en la aplicación.

(2) Es un temporizador sencillo y de pequeño tamaño que utiliza
métodos de devolución de llamada, atendido por subprocesos del grupo
de subprocesos

Veo que es casi similares pero no iguales o sí?

Ahora, en donde entra la función Sleep??

System.Threading.Thread.Sleep

Todos manejan threads (hilos) pero que tan eficiente es ocuparlos?

Por ejemplo veo que usan Timer para cosas de respaldos o funciones
donde se tienen que estar checando periódicamente algo, pero
supongamos lo siguiente: quiero hacer una función que imprima un
mensaje con su fecha

public void imprimeMF()
{
DateTime date = DateTime.Now;
Console.WriteLine("La fecha es: {0}", date);
Thread.Sleep(1000);
}

Aquí entiendo que se crea un hilo y se duerme 1 segundo. Que
diferencias podría haber si ocupara un timer??? y cual tiene mejor
desempeño?

ok

ATTE
Fuy

Preguntas similares