Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: XxyoyxX en 3 Diciembre 2011, 19:19 pm



Título: Problema con threads y vector de labels
Publicado por: XxyoyxX en 3 Diciembre 2011, 19:19 pm
Hola soy nuevo en esto de programar con c#, actualmente estoy realizando un programa para simular el movimiento de una abeja, con hilos (threads), en realidad no tengo ningun problema en mover 1 sola abeja, el problema esta cuando intento crear un vector de label para que cada vez que se presione un boton se inice un thread diferente y la imagen que se mueva sea otra, para poder instanciar el thread lo instancio de esta manera

t1 = new Thread(new ThreadStart(desplegar_especial));

el cual funciona de maravilla, pero simplemente para un solo label,

al intentar cambiar el label por un vector, y hacer lo mismo con el thread, lo manipulo de esta manera

teniendo en cuenta una posible variable contador,

abeja[contador].Visible = true;

De esta manera cada vez que entre al evento del boton coloca solo la imagen que se movera en ese momento,

t1[contador] = new Thread(new ThreadStart(desplegar_especial));

el problema esta en que el metodo desplegar_especial

no recibe parametros y para poder realizar la funcion de mover la imagen como es un vector necesito pasarle la posicion de la imagen que va a moverse, buscando en internet consegui que se puede instanciar un delegado que reciba un parametro y por medio de este ejecutar el metodo sobrecargado, lo hice

y quedo algo asi:

Nuestro_Hilo prueba = new Nuestro_Hilo(contador);

siendo Nuestro_Hilo la clase que implemento para realizar la nueva instancia   del thread,

t1[contador] = new Thread(new ThreadStart(prueba.mover_abeja));

t1[contador].Start();


en el codigo en si no marca error alguno ni al momento de ejecutarlo, pero cuando presiono click en el boton para iniciar el movimiento correspondiente de la imagen de acuerdo al vector, me sale el siguiente error:
(http://i44.tinypic.com/qxjhg5.png)

alguien podria ayudarme, de antemano muchas gracias  :-\


Título: Re: Problema con threads y vector de labels
Publicado por: seba123neo en 3 Diciembre 2011, 20:36 pm
me temo que es porque estas queriendo manipular controles de la UI en el thread y eso no se puede, ya que la UI corre en un thread diferente al que vos creas.

busca en internet que esta la solucion:

Invoke or BeginInvoke cannot be called on a control until the window handle has been created (http://stackoverflow.com/questions/808867/invoke-or-begininvoke-cannot-be-called-on-a-control-until-the-window-handle-has)

saludos.


Título: Re: Problema con threads y vector de labels
Publicado por: XxyoyxX en 3 Diciembre 2011, 21:04 pm
Ok, tratare de revisarlo cualquier duda, posteare por aquí muchas gracias por responder!...  :D