Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: kondrag_X1 en 24 Agosto 2016, 08:51 am



Título: [C#] hilos parametros
Publicado por: kondrag_X1 en 24 Agosto 2016, 08:51 am
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:


Título: Re: [C#] hilos parametros
Publicado por: El Benjo en 24 Agosto 2016, 19:42 pm
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.


Título: Re: [C#] hilos parametros
Publicado por: kondrag_X1 en 25 Agosto 2016, 10:25 am
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.



Título: Re: [C#] hilos parametros
Publicado por: El Benjo en 25 Agosto 2016, 20:50 pm
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.


Título: Re: [C#] hilos parametros
Publicado por: kondrag_X1 en 29 Agosto 2016, 15:15 pm
Código:
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]


Título: Re: [C#] hilos parametros
Publicado por: El Benjo en 29 Agosto 2016, 23:58 pm
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.