Foros del Web » Programación para mayores de 30 ;) » .NET »

una dudad sobre threads en c#

Estas en el tema de una dudad sobre threads en c# en el foro de .NET en Foros del Web. Muy buenas!! Estoy haciendo unas pruebas con threads usando c#. Arranco y paro el thread, hasta aqui bien Cita: Thread th1 = new Thread(new ThreadStart(Mostrar1())); ...
  #1 (permalink)  
Antiguo 01/02/2008, 04:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 78
Antigüedad: 19 años, 1 mes
Puntos: 0
una dudad sobre threads en c#

Muy buenas!!

Estoy haciendo unas pruebas con threads usando c#. Arranco y paro el thread, hasta aqui bien

Cita:
Thread th1 = new Thread(new ThreadStart(Mostrar1()));
th1.Priority = ThreadPriority.Lowest;
Application.Add("status", "true");
Application.Add("totalVueltas", "0");
th1.Start();
Thread.Sleep(1000);
El problema me viene en que necesito enviar un parametro a la función a la que llamo con el thread:


Cita:
Thread th1 = new Thread(new ThreadStart(Mostrar1(0)));
th1.Priority = ThreadPriority.Lowest;
Application.Add("status", "true");
Application.Add("totalVueltas", "0");
th1.Start();
Thread.Sleep(1000);
Cita:
public void Mostrar1(int total)
{
int i = 0;
do{
total++;
if (i < 35) Thread.Sleep(100);
else Thread.Sleep(350);
Application.Set("totalVueltas", total.ToString());
i++;
} while ((i < 100) && (String.Compare(Application.Get("status").ToString (), "false") != 0));
Application.Set("status", "false");
}
Pero haciendo esto me da el siguiente error: Method name expected

La variable no la puedo alojar como global de la pagina porq en ocasiones tengo que llamarla desde otra pagina con un valor determinado
  #2 (permalink)  
Antiguo 01/02/2008, 07:46
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Re: una dudad sobre threads en c#

Para ese caso deberías (Es la forma mas simple) crearte una clase, y meter ahi tus metodos. Y los parametros ponerlos como propiedades de la clase.

Código:
ClsMiClase objMiClase = new ClsMiClase("miParametroDelMetodo")
Thread objHebra = new Thread( new ThreadStart(objMiClase.UnMetodo() );
objHebra.Start();
El método UnMetodo() hará uso del parametro que, por ejemplo, hayas pasado en el constructor del objeto.


Si quieres meterte más a full con este tema, tendrías que mirar el método BeginInvoke(). Yo tengo algún ejemplo de realizar llamadas asíncronas eficientes, pero no aqui (estoy en el trabajo).


Pero con eso te valdrá.


Un saludo.
__________________
Charlie.
  #3 (permalink)  
Antiguo 01/02/2008, 09:50
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Re: una dudad sobre threads en c#

Puedes utilizar un truco que utilizo yo, y es usar el campo Name del thread para pasarle un parámetro. Pruebalo, es sencillo y rápido de implementar, y apenas tendrás que cambiar nada, solo añadir un par de linias
  #4 (permalink)  
Antiguo 01/02/2008, 13:36
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Re: una dudad sobre threads en c#

Lo mejor q puedes hacer es utilizar un ParameterizedThreadStart en vez de un simple threadstart y con eso lo haras

saludos

peterpay
  #5 (permalink)  
Antiguo 04/02/2008, 06:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 78
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: una dudad sobre threads en c#

Muchas gracias a todos, aunque debo decir que me han cambiado varios detalles del funcionamiento y la pregunta quedo algo desfasada.

Aunque muchas gracias y espero que esta información me sirva en otro momento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:32.