Está en la página 1de 3

THREADS O HILOS EN C#

El concepto de Hilos o Threading no es un tema desconocido para la gran mayoría de


programadores con experiencia, y tampoco pobre en documentación en Internet, lo más
importante. Para que y cuando usarlos. Así que "Manos a los hilos".

Una aplicación sin hilos


Antes de responder la pregunta hay que conocer sobre los contextos, los contextos son
cada uno de los procesos que conforman una aplicación a nivel de procesador. Hablemos
de una aplicación de escritorio: La interfaz gráfica de una aplicación de escritorio se
ejecuta en un mismo contexto (o proceso), podemos saber eso ya que al darle clic a un
botón que hace alguna tarea, la interfaz se bloqueará hasta que haya terminado dicha
tarea.

Tendremos en el formulario un botón (BtnIniciarProceso) para iniciar un proceso que se


demorará más de 10 segundos y otro botón (BtnMostrarMensaje) que nos mostrará un
"Hola Edwin" en un MessageBox. Vamos al código.
Importar el siguiente using.
using System.Threading;
Implementemos el evento click de ambos botones,
Crearemos un método que se llama CorrerProceso y lo llamaremos desde el evento del
botón BtnIniciarProceso
private void CorrerProceso()
{
//Hacer que se tarde 10000 milisegundos (10 segundos)
Thread.Sleep(10000);
MessageBox.Show("Proceso finalizado");
}
Como ven, la clase Thread tiene un método estático llamado Sleep(int), lo que hace es
"dormir" en esa línea el tiempo en milisegundos que le pasemos como parámetro. El
código anterior hará que se "duerma" 10 segundos, así simularemos una consulta muy
pesada o algún otro proceso.
En el evento clic del otro botón (BtnMostrarMensaje) pondremos un simple mensaje.
MessageBox.Show("Hola Edwin");
Todo quedará así:

Que es un hilo
Un hilo es un proceso que se ejecuta en un contexto diferente y simultáneamente al que
lo crea. Es decir, crea un subproceso.

Cómo crear un hilo en C#


Continuando con nuestro proyecto "Hilos" realizaremos la misma tarea pero esta vez
usando hilos. Antes conozcamos lo siguiente:
 Un hilo es una instancia de la clase Thread.
 Al crear una instancia de Thread debemos pasarle como parámetro la instancia de
un delegado, dicho delegado "apunta" al método que realizará el proceso en segundo plano.
Como sé que lo anterior puede llegar a ser difícil de entender vamos a practicarlo pero
YA.
Los cambios que necesitamos solo los haremos en el evento clic del
botón BtnIniciarProceso. Veamos:
//Creamos el delegado
ThreadStart delegado = new ThreadStart(CorrerProceso);
//Creamos la instancia del hilo
Thread hilo = new Thread(delegado);
//Iniciamos el hilo
hilo.Start();
Es simple, creamos un delegado indicándole el nombre del método que correrá, luego
creamos una instancia de Thread indicandole el delegado que será ejecutado y por último
damos inicio al proceso pero por medio del hilo. (en un subproceso).
Si lo pruebas te darás cuenta de que ya puedes correr el proceso y a la vez puedes mostrar
el mensaje "Hola Edwin" de forma simultánea y sin perjudicar (bloquear) la interfaz
gráfica.
http://eledwin.com/blog/tutorial-de-hilos-en-c-con-ejemplos-parte-1-31