Iniciar thread

22/09/2004 - 15:06 por raul | Informe spam
Hola

He creado un hilo, y en ese hilo quiero que ejecute un metodo. si el
metodo es de tipo void, funciona bien, pero si le paso dos parametros al
metodo, me da un error. ¿ Como se puede hacer esto?

Como tengo creado el hilo
Thread thread=new Thread(new ThreadStart( asocket.conectar));

thread.IsBackground=true;

thread.Start();

y quisiera crearlo de esta forma

Thread thread=new Thread(new ThreadStart(
asocket.conectar("192.168.1.10","20000")));

thread.IsBackground=true;

thread.Start();



Gracias

Preguntas similare

Leer las respuestas

#1 Alx Sharp
22/09/2004 - 17:10 | Informe spam
Hola...

Para entender porque no puedes pasar parámetros a tu
método tendrás que revisar algo sobre delegates en la
documentación MSDN, pero básicamente, lo que ocurre es que
el constructor de la clase Thread espera como parámetro un
delegate del tipo ThreadStart, el cual está declarado como

public delegate void ThreadStart();

es decir, tu método (o cualquiera que utilices para
iniciar un hilo) debe devolver void y no recibir
parámetros.

Si la declaración fuera:

public delegate void ThreadStart(object a, object b);

tu método podría recibir dos parámetros de tipo object.

Espero que ayude...

Saludos...

Hola

He creado un hilo, y en ese hilo quiero que ejecute


un metodo. si el
metodo es de tipo void, funciona bien, pero si le paso


dos parametros al
metodo, me da un error. ¿ Como se puede hacer esto?

Como tengo creado el hilo
Thread thread=new Thread(new ThreadStart(


asocket.conectar));

thread.IsBackground=true;

thread.Start();

y quisiera crearlo de esta forma

Thread thread=new Thread(new ThreadStart(
asocket.conectar("192.168.1.10","20000")));

thread.IsBackground=true;

thread.Start();



Gracias




.

Respuesta Responder a este mensaje
#2 pablo crosio
22/09/2004 - 18:13 | Informe spam
hola!

una alternativa...

podes crear 2 propiedades o variables miembro de tu clase
que contiene el metodo conectar.
antes de ejecutar el thread, inicializas las variables y
luego desde el mimso thread al inicio tomas sus valores

claro que no importaria el estado de estas variables entre
threads, simplemente servirian como parametros de entrada

es una idea, incluso tal vez tengas que sincronizar el
acceso a dichas variables para ajustar la logica

ej:

Thread thread=new Thread(new ThreadStart
(asocket.conectar));

asocket.ip = "192.168.1.10";
asocket.port = "20000";

thread.Start();

desde dentro del thread leerias las variables al inicio

espero te sirva

salu2!!

pablo





Hola

He creado un hilo, y en ese hilo quiero que ejecute


un metodo. si el
metodo es de tipo void, funciona bien, pero si le paso


dos parametros al
metodo, me da un error. ¿ Como se puede hacer esto?

Como tengo creado el hilo
Thread thread=new Thread(new ThreadStart(


asocket.conectar));

thread.IsBackground=true;

thread.Start();

y quisiera crearlo de esta forma

Thread thread=new Thread(new ThreadStart(
asocket.conectar("192.168.1.10","20000")));

thread.IsBackground=true;

thread.Start();



Gracias




.

Respuesta Responder a este mensaje
#3 Octavio Hernandez
23/09/2004 - 00:20 | Informe spam
Hola,

En .NET 2.0 la clase Thread tendrá otro constructor que recibirá un
ParameterizedThreadStart, que es un delegado asociado a un método con un
parámetro de entrada de tipo object. Ideal para cosas como lo que necesitas.

De momento, la solución de Pablo parece ser la mejor.

Slds - Octavio

"raul" escribió en el mensaje
news:
Hola

He creado un hilo, y en ese hilo quiero que ejecute un metodo. si el
metodo es de tipo void, funciona bien, pero si le paso dos parametros al
metodo, me da un error. ¿ Como se puede hacer esto?

Como tengo creado el hilo
Thread thread=new Thread(new ThreadStart( asocket.conectar));

thread.IsBackground=true;

thread.Start();

y quisiera crearlo de esta forma

Thread thread=new Thread(new ThreadStart(
asocket.conectar("192.168.1.10","20000")));

thread.IsBackground=true;

thread.Start();



Gracias




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida