Eventos

17/08/2004 - 08:30 por e-lores | Informe spam
Tengo un objeto que realiza ciertas tareas en segundo plano. Una vez
finalizadas éstas, lanza un evento del propio objeto para realizar otras
tareas en primer plano (Por ejemplo: realizar cálculos en segundo plano ->
mostrar resultado en primero). ¿Cuál es la forma óptima de realizar esto?
(Vi algún ejemplo utilizando Invoke, pero ahora no lo encuentro y tampoco
entendí el porqué en aquel momento)

Gracias.
Ernesto Lores.
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
17/08/2004 - 12:32 | Informe spam
La solución pasa por usar hilos, lazando un hilo que se encarge de hacer la
tarea pesada en segundo plano. Basicamente, el problema que existe es que no
puedes actuar sobre un control de interfaz desde un hilo diferente al hilo
en el que se creo el control. Para eso existe el tema del BeginInvoke de los
controles que se encarga de hacer el marshalling necesario para que el hilo
que haga la llamada al componente de interfaz sea el adecuado.

Aqui tienes una recopilación de articulos sobre el tema:

.NET: Practical Multithreading for Client Apps -- MSDN Magazine, January
2004
http://msdn.microsoft.com/msdnmag/issues/04/01/NET

Windows Forms: Give Your .NET-based Application a Fast and Responsive UI
with Multiple Threads -- MSDN Magazine, February 2003
http://msdn.microsoft.com/msdnmag/i...ithreading

.NET Delegates: Making Asynchronous Method Calls in the .NET Environment --
MSDN Magazine, August 2001
http://msdn.microsoft.com/msdnmag/i...1/08/async

Basic Instincts: Asynchronous Method Execution Using Delegates -- MSDN
Magazine, January 2004
http://msdn.microsoft.com/msdnmag/i...cinstincts

Basic Instincts: Updating the UI from a Secondary Thread -- MSDN Magazine,
May 2004
http://msdn.microsoft.com/msdnmag/i...cInstincts



Un saludo
Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net

Preguntas similares