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
Tutorial y Guías para Crear Comandos y Batch en MSDOS para WindowsLo Que Sigue A Continuación Es Un Pequeño Manual para Introducirte en El Mundo de Laprogramación Batch