[C#] hilos parametros

Iniciado por kondrag_X1, 24 Agosto 2016, 08:51 AM

0 Miembros y 1 Visitante están viendo este tema.

kondrag_X1

Hola a todos, a ver si alguien me puede echar una mano que estoy un pelin perdido.

Bueno pues el tema es que tengo una clase que lanza un hilo, y como en el programa solo se instanciaba una vez, la variables de la clase se compartian con el hijo mediante el identificador static y no habia ningún problema. Pero ahora necesito instanciar dos objetos y al estar la variables de la clase como static son compartidas por todos los objetos de la aplicacion. Cómo se puede solucionar esto? usando delegados?

:silbar:

El Benjo

Si lo que quieres es que la variable se siga compartiendo con las clases hijo pero que se cree una instancia por cada objeto creado entonces utiliza protected en lugar de static.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

kondrag_X1

No lo que quiero es que cada clase comparta la variable con su hilo, al final haciendo una copia del los parámetros se los paso al hilo y me ha funcionado. Lo malo que si deseo que se modifique desde el hilo tendre que implementar un patron observador para notificar a la clase.


El Benjo

Creo que ya te entendí, déjame resumirlo así:


  • Debe haber una variable 'x' que necesita ser estática para poder ser usada por todo el proyecto.
  • Cuando se cree un hilo en una instancia de la clase, se debe pasar el valor de la variable 'x' para que sea independiente en cada instancia.
  • Cuando en una de las instancias se modifique el valor que se le pasó como parámetro entonces ese valor debe verse reflejado en la variable estática 'x'.

Si es así, el propio problema te da la solución: Crea una variable privada en la clase cuyo valor sea el de la variable 'x' cuando lanzas el hilo y en el código del hilo trabaja con ella en vez de la variable 'x'.

Te podemos ayudar mejor si compartes el código.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

kondrag_X1


class M
{
public static X;
private Thread mT;
public M()
{
mT = new Thread(startThread);
mt.Start();
}

public void startThread()
{
   // aqui leo la variable
}
}

public Main()
{
M uno = new M();
M dos = new M();
}
[code]

El problema esque ambas clases compartiran la variable statica y si la hago publica protected no se puede modificar por el hilo. No sé si ahora se entenderá un poco mas el problema.
[/code]

El Benjo

Por favor utiliza los términos adecuados para describir el comportamiento de tu código porque 'compartir' significa que será la misma variable para todos los hilos. Decide cual será exactamente el comportamiento de tu aplicación porque sólo puedes tener uno de los dos comportamientos static o private. Otra cosa, no estás mostrando en qué parte se te niega la asignación a la variable.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.