Usando Threads con parametros : Javier Luna blog

Friday, January 09, 2009

Usando Threads con parametros

Utilizar Threads brota a la necesidad de ejecutar multiples operaciones relativamente pesadas.

Pesadas en el sentido que el tiempo para concluir su ejecucion, es relativamente indeterminado. Es decir, la aplicacion NO puede quedarse a la espera de que concluya dicha operacion sin que el usuario quede inhabilitado de continuar usando el software.

Los Threads permiten una solucion a esta necesidad.

Sin embargo, como toda operacion siempre se requerira de una especie de parametrizacion, es decir, enviarle una serie de parametros para que se ejecute con ciertas variables inicializadas previamente.

¿Que hacer ante este requerimiento? ¿Como puedo pasarle parametros a un metodo corriendo sobre un Thread?

Un metodo extenso, es casi siempre una potencial clase, es decir un class, que podras encapsular de la manera que mejor creas conveniente.

Aquel metodo relativamente extenso y pesado, podra ser abstraido a una clase, a la cual expondras un metodo publico sin parametros: Run, por ejemplo.

El constructor de la clase, tendra todos los parametros necesarios que requiera esa operacion relativamente pesada.

Entonces, tu instanciaras un objeto de dicha clase, y colocaras sobre un Thread el metodo Run de aquella class.

MyClass o = new MyClass( param1, param2 )
Thread t = new Thread( o.Run );
t.Start();

Este mecanismo te brindara la solucion a tus problemas.

Por otro lado, existe una clase propia del .NET Framework llamada ParameterizedThreadStart pero como todo lo que esta disponible para usar en el .NET Framework, tiene un costo, perder el control sobre la ejecucion interna de la operacion sobre el Thread.

Algo que a la primera, puede que NO le tomes la minima importancia, pero que luego, conforme van madurando el producto de software, este debe ajustarse a mas necesidades que la inicialmente indicadas.

Por lo que perder el control, tendra un costo mas alto despues.

Ese despues, esta solo a la vuelta de la esquina. NO lo dudes!

3 comments:

Anonymous said...

Hello. And Bye.

Anonymous said...

Hi folks... I'm completely new here however I cannot wait to begin having/getting some great talks with you all! I just decided i would introduce myself to you all so whats up!

Anonymous said...

Hi Everyone! I hope all is well and I look forward to be a great contributor to this community. Feel free to introduce yourself so I can get to know you better...