• Domingo 22 de Diciembre de 2024, 08:28

Autor Tema:  Usando Threading  (Leído 1457 veces)

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Usando Threading
« en: Viernes 16 de Diciembre de 2005, 20:25 »
0
Hola colegas :hola: ,

me ha surgido un problema.Estoy desarrollando una aplicación en la que tengo una array con 2 elementos,y estos elementos son direcciones de dispositivos a los que tengo que mandar datos.Entonces quiero usar Threading,de forma,que cree un hilo de envío por cada dispositivo:

Código: Text
  1. Thread t1 = new Thread( new ThreadStart(Envio) );
  2.  

pero no se como se le pasan parámentros a un thread,es decir,lo ideal sería hacer:

Código: Text
  1.      Thread t1 = new Thread( new ThreadStart(Envio,direcciones[0]));
  2.                 Thread t2 = new Thread( new ThreadStart(Envio,direcciones[1]));
  3.  
  4.  
             

no se si lo veis,lo que kiero es poder pasarle a cada Thread la dirección como parametro,de forma que tenga dos hilos,cada uno mandando a una direccion :blink: .

Lo único malo es que no se como pasarle esos parámetros al Thread,he estado buscando y sólo veo como se le pueden pasar funciones,no parametros :huh: .

¿Alguien podría decirme si se puede hacer esto?,

muchas gracias!!!!!!! :kicking:
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Re: Usando Threading
« Respuesta #1 en: Lunes 19 de Diciembre de 2005, 11:19 »
0
Hola amigos :hola: ,

con un pequeño truco ya he conseguido pasarle los parametros a los Threads :smartass: ,pero lo que necesito ahora es lo siguiente. No kiero tener que hacer esto:

Código: Text
  1. Thread t1 = new Thread( new ThreadStart(Envio,direcciones[0]));
  2.                Thread t2 = new Thread( new ThreadStart(Envio,direcciones[1]));
  3.  
  4.  

para cada dispositivo,es decir,si ahora tuviera que mandar a un tercer dispositivo tendría que añadir una tercera línea,no se si me explico :blink: . Lo ideal es tener una variable,NumeroDispositivos y poder hacer lo siguiente:

Código: Text
  1.   for (int i=0;i<NumeroDispositivos;i++)
  2.                   {
  3.                          direccion=mac[i];
  4.                     Thread  i.ToString() = new Thread(new ThreadStart(Envio,direccion);
  5.                     }
  6.  

entendeis a q me refiero,lo que kiero es que solo modificando la variable NumeroDispsitivos pueda mandar al numero que kiera sin andar añadiendo lineas de código.

De hecho os traslado esta misma duda al ámbito de las clases:

imaginaos que tenemos una clase Coche,con todas sus propiedades y metodos,y ahora queremos crear 'N' del tirón,es posible hacer:

Código: Text
  1.   for (int i=0;i<N;i++)
  2.                   {
  3.                    Coche  i.ToString() = new Coche();
  4.                    }
  5.  

y crear ´N`coches,que en este caso tendría como identificador 0,1,2..,N(pero considerados string),es decir si hay un metodo arrancarCoche,se accedería desde el primer coche como:

0.arrancarCoche

no se si sabeis a lo que me refiero,pero tiene que haber una forma de hacer esto,

bueno,espero vuestra ayuda,es muy importante para mi poder solucionar esto, :huh:

gracias y salu2!!!!!!! :kicking:
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Usando Threading
« Respuesta #2 en: Lunes 19 de Diciembre de 2005, 16:42 »
0
no entendi muy bien que es lo que pretendes, oero... y si usas una variable externa al metodo del thread? te funcionaria?.. mmm creo que no  :huh:

La otra evz tenia ese problema y no lo solucione como tu necesitas, lo hice con una variable de la lase.. pero ent un caso... no se que hacer.

averiguaste en MSDN.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Re: Usando Threading
« Respuesta #3 en: Lunes 19 de Diciembre de 2005, 19:09 »
0
Que tal Juank,gracias como siempre por responder, :D

lo de pasar el parametro a un Thread ya lo he solucionado con una variable de la clase,como tu has comentado.Ahora kiero hacer lo siguiente:
Imagina que tengo una clase como esta:

Código: Text
  1.     class Mensaje
  2.                {
  3.      public string mac;
  4.  
  5.       public void EnvioSimple()
  6.                      {
  7.                       //Lo q sea
  8.                       }
  9.                 }
  10.  
  11.  

ahora kiero hacer lo siguiente:

Código: Text
  1.  
  2.                 Mensaje[] m;
  3.   ThreadStart[] ts;
  4.   Thread[] t;
  5.                 m = new EnvMsj[numDisp];
  6.   ts = new ThreadStart[numDisp];
  7.   t = new Thread[numDisp];
  8.   for (int i = 0;i<numDisp;i++)
  9.     {
  10.       m[i].mac = direccion[i];
  11.       ts[i] = new ThreadStart(m[i].EnvioSimple);
  12.       t[i] = new Thread(ts[i]);
  13.       t[i].Start();
  14.     }
  15.  
  16.  

no se si lo vez,kiero crear un array de objetos Mensaje,para poder asignarles su direccion con un bucle For.Lo mismo kiero hacer con los Threads,kiero crear un array de objetos Thread para poder iniciarlos desde el For,de forma que si modifico la variable numDisp,y en lugar de enviar a 4 mando a 5 dispositivos no tenga que modificar todo el código.

El problema es que esto me da errores por todos lados,no se como hacerlo,

ayuda por favooooooooooooor :(
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.