Thread Method con parametros

13/11/2006 - 17:29 por Lazarte Federico | Informe spam
Estimados.
Intento lanzar un thread cuyo metodo recibe dos parametros tipo string.
El echo es que el compilador me marca la linea como erronea.
El codigo del metodo es el siguiente el siguiente

private void ThreadMethodMTNuevos(string url, string posturl)
{
Encoding encode = Encoding.GetEncoding("ISO-8859-1");
byte[] byteArray = Encoding.Default.GetBytes(MT_postUrl);

// 'ContentType' property of the 'HttpWebRequest' class is set to
"application/x-www-form-urlencoded".

request.ContentType="application/x-www-form-urlencoded";

// 'ContentLength' property is set to Length of the data to be posted.
request.ContentLength=byteArray.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byteArray,0,byteArray.Length);
newStream.Close();

// Genero un response para obtener la respuesta desde la URL llamada
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream respuesta = response.GetResponseStream();
StreamReader readRespuesta = new StreamReader(respuesta, encode);

resp = readRespuesta.ReadLine() + readRespuesta.ReadLine();
response.Close();
return resp;

}

Y la llamada al metodo la hago de esta manera
Thread newThreadMTNuevos = new Thread(new
ThreadStart(ThreadMethodMTNuevos(url, posturl)));
newThreadMTNuevos.Start();

Y el error que me da es el siguiente "Se Esperaba un Nombre de Metodo"

El que me pueda dar una mano desde ya mucha gracias.

Federico

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
13/11/2006 - 17:48 | Informe spam
"Lazarte Federico" wrote in message
news:
[...] Y la llamada al metodo la hago de esta manera
Thread newThreadMTNuevos = new Thread(new
ThreadStart(ThreadMethodMTNuevos(url, posturl)));
newThreadMTNuevos.Start();

Y el error que me da es el siguiente "Se Esperaba un Nombre de Metodo"



El problema está en el new ThreadStart.
Para empezar, ThreadStart es un delegado, y el constructor de un delegado
espera únicamente el nombre del método al que se conecta, sin que se le
puedan pasar los parámetros en este sitio. Así que, de entrada, para que no
te dé el error que te da, la llamada debería ser la siguiente:

Thread newThreadMTNuevos = new Thread(new
ThreadStart(ThreadMethodMTNuevos));

Pero si lo corriges y pones esto, te seguirá dando un error porque
ThreadStart es un tipo de delegado que solo sirve para apuntar a rutinas que
NO TOMEN PARAMETROS.

En la versión 1 del framework no había alternativa, y no se podían pasar
parámetros a un Thread a través de la rutina de arranque, y no había más
remedio que pasarlos a través de variables de clase.
Pero en el framework v2.0 (visual studio 2005) sí que hay una forma de
hacerlo, que pasa por usar un ParameterizedThreadStart en lugar del
ThreadStart. Si escribes ParameterizedThreadStart en la ayuda en linea
encontrarás un ejemplo de cómo se usa. Por cierto, observa que no te deja
pasar dos parámetros, sino solo un único parámetro, pero éste es de tipo
Object y por tanto te sirve para pasar un objeto de una clase que puedes
definir de forma que dentro contenga los dos parámetros que quieres pasar.
Respuesta Responder a este mensaje
#2 José Mª Toro Bermejo
15/11/2006 - 18:00 | Informe spam
Como bien dice Alberto en la 2005 se puede utilizar
ParameterizedThreadStart.
Intenta hacerlo de la siguiente forma:

private void ThreadMethodMTNuevos(object o)
{
//Puedes utilizarlo asi
string[] parametros = ( ( string[] ) o);
//o bien
string url = ( ( string[] ) o)[0];
string posturl = = ( ( string[] ) o)[1];
}
Cuando llames a la funcion a traves del thread utiliza el siguiente codigo:
Thread t_thread = new Thread(new
ParameterizedThreadStart(ThreadMethodMTNuevos));
string[] params = new string[2];
params[0] = url;
params[1] = posturl ;
t_thread.Start(((object)params));

Recibe un cordial saludo,
José Mª Toro Bermejo


"Lazarte Federico" escribió en el mensaje
news:
Estimados.
Intento lanzar un thread cuyo metodo recibe dos parametros tipo string.
El echo es que el compilador me marca la linea como erronea.
El codigo del metodo es el siguiente el siguiente

private void ThreadMethodMTNuevos(string url, string posturl)
{
Encoding encode = Encoding.GetEncoding("ISO-8859-1");
byte[] byteArray = Encoding.Default.GetBytes(MT_postUrl);

// 'ContentType' property of the 'HttpWebRequest' class is set to
"application/x-www-form-urlencoded".

request.ContentType="application/x-www-form-urlencoded";

// 'ContentLength' property is set to Length of the data to be posted.
request.ContentLength=byteArray.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byteArray,0,byteArray.Length);
newStream.Close();

// Genero un response para obtener la respuesta desde la URL llamada
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream respuesta = response.GetResponseStream();
StreamReader readRespuesta = new StreamReader(respuesta, encode);

resp = readRespuesta.ReadLine() + readRespuesta.ReadLine();
response.Close();
return resp;

}

Y la llamada al metodo la hago de esta manera
Thread newThreadMTNuevos = new Thread(new
ThreadStart(ThreadMethodMTNuevos(url, posturl)));
newThreadMTNuevos.Start();

Y el error que me da es el siguiente "Se Esperaba un Nombre de Metodo"

El que me pueda dar una mano desde ya mucha gracias.

Federico

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