Threads rapidos... Demasiado rapidos

23/02/2006 - 15:38 por Bodescu | Informe spam
Hola a la comunidad:

Mi problema es conseguir que se coordinen los threads:

Utilizo un thread lanzadera, para llamar a un metodo al que hay que
pasarle parametros. Inmediatamente despues de lanzado el metodo que pasa
los params, estos deben actualizar su valor.

El caso es que la creacion de los hilos es tan rapida que no da tiempo a
los parametros a actualizar su valor, y me crea varios hilos iguales...

Se os ocurre alguna idea?

Gracias

Preguntas similare

Leer las respuestas

#11 Octavio Hernandez
24/05/2006 - 10:50 | Informe spam
Hola, Francisco!

¿Qué es lo que no funciona?

Slds - Octavio


"Francisco Garrido ()" <Francisco Garrido
()@discussions.microsoft.com> escribió en el mensaje
news:
Hola Octavio.

Yo tengo algo parecido (array de threads) pero no funciona bien.
En una clase tengo definida la variable del array de threads y luego,
dentro
de un bucle, controlado por una variable que voy incrementando, voy
creando
threads (llama a una función que está dentro de esta misma clase).
Aquí tienes el código:

public class DescomprimirZIP
{
...
Thread[] ArrayThreadsCarpetas = new Thread[50];
...

public void SubirDocumentoYDescomprimir()
{
...
int indiceArrayThread = 0;
for (int index=1;index<arrayCarpetas.Length;++index)
{
...
ArrayThreadsCarpetas[indiceArrayThread] = new Thread(new
ThreadStart(subirCarpetaDescomprimida));
ArrayThreadsCarpetas[indiceArrayThread].Start();
indiceArrayThread = indiceArrayThread + 1;
}
}

public static void subirCarpetaDescomprimida()
{
...
...
}
}

"Octavio Hernandez" wrote:

Bodescu,

Lo que te quiería recomendar que hicieras es esto:

Thread[] Hilo1 = new Thread[65]; // 0-64
for (int x=0;x<d;x++)
{
// llamar al método de la "lanzadera" en el hilo principal
// (para qué crear un nuevo hilo si tienes que esperar hasta que
termine?)
MiMetodo(x, y);
// crear el hilo, ya teniendo el valor de 'y'
// aquí ya sigue las indicaciones de Vyacheslav sobre el hilo con
un
parámetro
Hilo1[x] = new Thread(...)
Hilo1[x].Start();
}

Salu2 - Octavio



"Bodescu" escribió en el mensaje
news:
> Hola Octavio, gracias por tu respuesta.
>
> La cosa es tal que asi:
>
> for (int x=0;x<c;x++)
> {
> Tarea= new Thread(new Threadstart(Lanzadera));
> //Actualizacion de parametros
> }
>
> Si no uso la lanzadera, me pasa esto:
>
> for (int x=0;x<c;x++)
> {
> Tarea= new Thread(new Threadstart(Mimetodo(x,y)));
> //Actualizacion de parametros
> }
> Y me dice que esperaba un metodo...
>
> Como me sugieres que lo implemente?
>
> un saludo
>
>
>
>
>
> Octavio Hernandez wrote:
>> Hola,
>>
>> Para la sincronización de los hilos puedes utilizar el método
>> Thread.Join():
>>
>>
>> http://msdn.microsoft.com/library/d...nTopic.asp
>>
>> Leyendo este mensaje tuyo y el anterior, me da la impresión de que
>> debes
>> olvidarte de la idea de la "lanzadera" y simplemente poner el código
>> que
>> tienes en ese hilo en el cuerpo del bucle dentro del que creas los
>> demás
>> hilos.
>>
>> Slds - Octavio
>>
>>
>> "Bodescu" escribió en el mensaje
>> news:OE%
>>> Hola a la comunidad:
>>>
>>> Mi problema es conseguir que se coordinen los threads:
>>>
>>> Utilizo un thread lanzadera, para llamar a un metodo al que hay que
>>> pasarle parametros. Inmediatamente despues de lanzado el metodo que
>>> pasa
>>> los params, estos deben actualizar su valor.
>>>
>>> El caso es que la creacion de los hilos es tan rapida que no da
>>> tiempo a
>>> los parametros a actualizar su valor, y me crea varios hilos
>>> iguales...
>>>
>>> Se os ocurre alguna idea?
>>>
>>> Gracias
>>


Respuesta Responder a este mensaje
#12 Francisco Garrido (fcogarrido
24/05/2006 - 11:05 | Informe spam
Hola Octavio!

Pues cuando "debugo" la aplicación, me sale una ventanita de windows con
este error:

"An unhandled exception of type 'System.NullReferenceException' occurred in
Unknown Module.

Additional information: Object reference not set to an instance of an object."

Qué puede ser?


"Octavio Hernandez" wrote:

Hola, Francisco!

¿Qué es lo que no funciona?

Slds - Octavio


"Francisco Garrido ()" <Francisco Garrido
()@discussions.microsoft.com> escribió en el mensaje
news:
> Hola Octavio.
>
> Yo tengo algo parecido (array de threads) pero no funciona bien.
> En una clase tengo definida la variable del array de threads y luego,
> dentro
> de un bucle, controlado por una variable que voy incrementando, voy
> creando
> threads (llama a una función que está dentro de esta misma clase).
> Aquí tienes el código:
>
> public class DescomprimirZIP
> {
> ...
> Thread[] ArrayThreadsCarpetas = new Thread[50];
> ...
>
> public void SubirDocumentoYDescomprimir()
> {
> ...
> int indiceArrayThread = 0;
> for (int index=1;index<arrayCarpetas.Length;++index)
> {
> ...
> ArrayThreadsCarpetas[indiceArrayThread] = new Thread(new
> ThreadStart(subirCarpetaDescomprimida));
> ArrayThreadsCarpetas[indiceArrayThread].Start();
> indiceArrayThread = indiceArrayThread + 1;
> }
> }
>
> public static void subirCarpetaDescomprimida()
> {
> ...
> ...
> }
> }
>
> "Octavio Hernandez" wrote:
>
>> Bodescu,
>>
>> Lo que te quiería recomendar que hicieras es esto:
>>
>> Thread[] Hilo1 = new Thread[65]; // 0-64
>> for (int x=0;x<d;x++)
>> {
>> // llamar al método de la "lanzadera" en el hilo principal
>> // (para qué crear un nuevo hilo si tienes que esperar hasta que
>> termine?)
>> MiMetodo(x, y);
>> // crear el hilo, ya teniendo el valor de 'y'
>> // aquí ya sigue las indicaciones de Vyacheslav sobre el hilo con
>> un
>> parámetro
>> Hilo1[x] = new Thread(...)
>> Hilo1[x].Start();
>> }
>>
>> Salu2 - Octavio
>>
>>
>>
>> "Bodescu" escribió en el mensaje
>> news:
>> > Hola Octavio, gracias por tu respuesta.
>> >
>> > La cosa es tal que asi:
>> >
>> > for (int x=0;x<c;x++)
>> > {
>> > Tarea= new Thread(new Threadstart(Lanzadera));
>> > //Actualizacion de parametros
>> > }
>> >
>> > Si no uso la lanzadera, me pasa esto:
>> >
>> > for (int x=0;x<c;x++)
>> > {
>> > Tarea= new Thread(new Threadstart(Mimetodo(x,y)));
>> > //Actualizacion de parametros
>> > }
>> > Y me dice que esperaba un metodo...
>> >
>> > Como me sugieres que lo implemente?
>> >
>> > un saludo
>> >
>> >
>> >
>> >
>> >
>> > Octavio Hernandez wrote:
>> >> Hola,
>> >>
>> >> Para la sincronización de los hilos puedes utilizar el método
>> >> Thread.Join():
>> >>
>> >>
>> >> http://msdn.microsoft.com/library/d...nTopic.asp
>> >>
>> >> Leyendo este mensaje tuyo y el anterior, me da la impresión de que
>> >> debes
>> >> olvidarte de la idea de la "lanzadera" y simplemente poner el código
>> >> que
>> >> tienes en ese hilo en el cuerpo del bucle dentro del que creas los
>> >> demás
>> >> hilos.
>> >>
>> >> Slds - Octavio
>> >>
>> >>
>> >> "Bodescu" escribió en el mensaje
>> >> news:OE%
>> >>> Hola a la comunidad:
>> >>>
>> >>> Mi problema es conseguir que se coordinen los threads:
>> >>>
>> >>> Utilizo un thread lanzadera, para llamar a un metodo al que hay que
>> >>> pasarle parametros. Inmediatamente despues de lanzado el metodo que
>> >>> pasa
>> >>> los params, estos deben actualizar su valor.
>> >>>
>> >>> El caso es que la creacion de los hilos es tan rapida que no da
>> >>> tiempo a
>> >>> los parametros a actualizar su valor, y me crea varios hilos
>> >>> iguales...
>> >>>
>> >>> Se os ocurre alguna idea?
>> >>>
>> >>> Gracias
>> >>
>>
>>



Respuesta Responder a este mensaje
#13 Octavio Hernandez
24/05/2006 - 15:43 | Informe spam
Francisco,

No veo la posible razón. Sí ten cuidado con los índices del bucle, index
empieza en 1 no sé si aposta o por accidente...
En que instrucción concreta de la excepción al ejecutar paso a paso?

Slds - Octavio


"Francisco Garrido ()"
escribió en el
mensaje news:
Hola Octavio!

Pues cuando "debugo" la aplicación, me sale una ventanita de windows con
este error:

"An unhandled exception of type 'System.NullReferenceException' occurred
in
Unknown Module.

Additional information: Object reference not set to an instance of an
object."

Qué puede ser?


"Octavio Hernandez" wrote:

Hola, Francisco!

¿Qué es lo que no funciona?

Slds - Octavio


"Francisco Garrido ()" <Francisco Garrido
()@discussions.microsoft.com> escribió en el mensaje
news:
> Hola Octavio.
>
> Yo tengo algo parecido (array de threads) pero no funciona bien.
> En una clase tengo definida la variable del array de threads y luego,
> dentro
> de un bucle, controlado por una variable que voy incrementando, voy
> creando
> threads (llama a una función que está dentro de esta misma clase).
> Aquí tienes el código:
>
> public class DescomprimirZIP
> {
> ...
> Thread[] ArrayThreadsCarpetas = new Thread[50];
> ...
>
> public void SubirDocumentoYDescomprimir()
> {
> ...
> int indiceArrayThread = 0;
> for (int index=1;index<arrayCarpetas.Length;++index)
> {
> ...
> ArrayThreadsCarpetas[indiceArrayThread] = new Thread(new
> ThreadStart(subirCarpetaDescomprimida));
> ArrayThreadsCarpetas[indiceArrayThread].Start();
> indiceArrayThread = indiceArrayThread + 1;
> }
> }
>
> public static void subirCarpetaDescomprimida()
> {
> ...
> ...
> }
> }
>
> "Octavio Hernandez" wrote:
>
>> Bodescu,
>>
>> Lo que te quiería recomendar que hicieras es esto:
>>
>> Thread[] Hilo1 = new Thread[65]; // 0-64
>> for (int x=0;x<d;x++)
>> {
>> // llamar al método de la "lanzadera" en el hilo principal
>> // (para qué crear un nuevo hilo si tienes que esperar hasta
>> que
>> termine?)
>> MiMetodo(x, y);
>> // crear el hilo, ya teniendo el valor de 'y'
>> // aquí ya sigue las indicaciones de Vyacheslav sobre el hilo
>> con
>> un
>> parámetro
>> Hilo1[x] = new Thread(...)
>> Hilo1[x].Start();
>> }
>>
>> Salu2 - Octavio
>>
>>
>>
>> "Bodescu" escribió en el mensaje
>> news:
>> > Hola Octavio, gracias por tu respuesta.
>> >
>> > La cosa es tal que asi:
>> >
>> > for (int x=0;x<c;x++)
>> > {
>> > Tarea= new Thread(new Threadstart(Lanzadera));
>> > //Actualizacion de parametros
>> > }
>> >
>> > Si no uso la lanzadera, me pasa esto:
>> >
>> > for (int x=0;x<c;x++)
>> > {
>> > Tarea= new Thread(new Threadstart(Mimetodo(x,y)));
>> > //Actualizacion de parametros
>> > }
>> > Y me dice que esperaba un metodo...
>> >
>> > Como me sugieres que lo implemente?
>> >
>> > un saludo
>> >
>> >
>> >
>> >
>> >
>> > Octavio Hernandez wrote:
>> >> Hola,
>> >>
>> >> Para la sincronización de los hilos puedes utilizar el método
>> >> Thread.Join():
>> >>
>> >>
>> >> http://msdn.microsoft.com/library/d...nTopic.asp
>> >>
>> >> Leyendo este mensaje tuyo y el anterior, me da la impresión de que
>> >> debes
>> >> olvidarte de la idea de la "lanzadera" y simplemente poner el
>> >> código
>> >> que
>> >> tienes en ese hilo en el cuerpo del bucle dentro del que creas los
>> >> demás
>> >> hilos.
>> >>
>> >> Slds - Octavio
>> >>
>> >>
>> >> "Bodescu" escribió en el mensaje
>> >> news:OE%
>> >>> Hola a la comunidad:
>> >>>
>> >>> Mi problema es conseguir que se coordinen los threads:
>> >>>
>> >>> Utilizo un thread lanzadera, para llamar a un metodo al que hay
>> >>> que
>> >>> pasarle parametros. Inmediatamente despues de lanzado el metodo
>> >>> que
>> >>> pasa
>> >>> los params, estos deben actualizar su valor.
>> >>>
>> >>> El caso es que la creacion de los hilos es tan rapida que no da
>> >>> tiempo a
>> >>> los parametros a actualizar su valor, y me crea varios hilos
>> >>> iguales...
>> >>>
>> >>> Se os ocurre alguna idea?
>> >>>
>> >>> Gracias
>> >>
>>
>>



Respuesta Responder a este mensaje
#14 Francisco Garrido (fcogarrido
24/05/2006 - 16:07 | Informe spam
Hola Octavio.

Por el índice que me dices no te preocupes porque lo utilizo para otra cosa.
El que controla el índice del array ya lo tengo controlado.
He probado a "vaciar" la sub a la que llama en formato "thread"
(subirCarpetaDescomprimida()), k es la que está el código aquí abajo y he
puesto solamente una variable "public static" en la que incrementaba en 1
cada vez que se ejecutaba un thread y ha ido bien, pero algo del código que
hay dentro de la sub esta no le "gusta":

public static void subirCarpetaDescomprimida()
{
try
{
AvaSPSTipos.Carpetas dsCarpetas = new AvaSPSTipos.Carpetas();
AvaSPSTipos.Carpetas.dtCarpetasRow carpeta =
dsCarpetas.dtCarpetas.NewdtCarpetasRow();
carpeta._pathRaiz = _pathRaiz;
carpeta._pathCarpeta = _pathCarpeta;
carpeta.Nombre = Nombre;
carpeta.Descripcion = Descripcion;
carpeta._IDUsuario = IDUsuario;
dsCarpetas.dtCarpetas.AdddtCarpetasRow(carpeta);
carpeta.Oculta = false;

Servicios.CarpetasSvc svcCarpetas = new Avanade.GIC.Servicios.CarpetasSvc();

bool res = svcCarpetas.CrearCarpeta(dsCarpetas);
}
catch (ArgumentException ae)
{
string var1 = ae.ToString();
}
catch (ThreadInterruptedException tie)
{
string var1 = tie.ToString();
}
catch(Exception ex)
{
WebFramework.WebClient.ExceptionHandling.ClientExceptionHandler.Handle(ex);
}
}

"Octavio Hernandez" wrote:

Francisco,

No veo la posible razón. Sí ten cuidado con los índices del bucle, index
empieza en 1 no sé si aposta o por accidente...
En que instrucción concreta de la excepción al ejecutar paso a paso?

Slds - Octavio


"Francisco Garrido ()"
escribió en el
mensaje news:
> Hola Octavio!
>
> Pues cuando "debugo" la aplicación, me sale una ventanita de windows con
> este error:
>
> "An unhandled exception of type 'System.NullReferenceException' occurred
> in
> Unknown Module.
>
> Additional information: Object reference not set to an instance of an
> object."
>
> Qué puede ser?
>
>
> "Octavio Hernandez" wrote:
>
>> Hola, Francisco!
>>
>> ¿Qué es lo que no funciona?
>>
>> Slds - Octavio
>>
>>
>> "Francisco Garrido ()" <Francisco Garrido
>> ()@discussions.microsoft.com> escribió en el mensaje
>> news:
>> > Hola Octavio.
>> >
>> > Yo tengo algo parecido (array de threads) pero no funciona bien.
>> > En una clase tengo definida la variable del array de threads y luego,
>> > dentro
>> > de un bucle, controlado por una variable que voy incrementando, voy
>> > creando
>> > threads (llama a una función que está dentro de esta misma clase).
>> > Aquí tienes el código:
>> >
>> > public class DescomprimirZIP
>> > {
>> > ...
>> > Thread[] ArrayThreadsCarpetas = new Thread[50];
>> > ...
>> >
>> > public void SubirDocumentoYDescomprimir()
>> > {
>> > ...
>> > int indiceArrayThread = 0;
>> > for (int index=1;index<arrayCarpetas.Length;++index)
>> > {
>> > ...
>> > ArrayThreadsCarpetas[indiceArrayThread] = new Thread(new
>> > ThreadStart(subirCarpetaDescomprimida));
>> > ArrayThreadsCarpetas[indiceArrayThread].Start();
>> > indiceArrayThread = indiceArrayThread + 1;
>> > }
>> > }
>> >
>> > public static void subirCarpetaDescomprimida()
>> > {
>> > ...
>> > ...
>> > }
>> > }
>> >
>> > "Octavio Hernandez" wrote:
>> >
>> >> Bodescu,
>> >>
>> >> Lo que te quiería recomendar que hicieras es esto:
>> >>
>> >> Thread[] Hilo1 = new Thread[65]; // 0-64
>> >> for (int x=0;x<d;x++)
>> >> {
>> >> // llamar al método de la "lanzadera" en el hilo principal
>> >> // (para qué crear un nuevo hilo si tienes que esperar hasta
>> >> que
>> >> termine?)
>> >> MiMetodo(x, y);
>> >> // crear el hilo, ya teniendo el valor de 'y'
>> >> // aquí ya sigue las indicaciones de Vyacheslav sobre el hilo
>> >> con
>> >> un
>> >> parámetro
>> >> Hilo1[x] = new Thread(...)
>> >> Hilo1[x].Start();
>> >> }
>> >>
>> >> Salu2 - Octavio
>> >>
>> >>
>> >>
>> >> "Bodescu" escribió en el mensaje
>> >> news:
>> >> > Hola Octavio, gracias por tu respuesta.
>> >> >
>> >> > La cosa es tal que asi:
>> >> >
>> >> > for (int x=0;x<c;x++)
>> >> > {
>> >> > Tarea= new Thread(new Threadstart(Lanzadera));
>> >> > //Actualizacion de parametros
>> >> > }
>> >> >
>> >> > Si no uso la lanzadera, me pasa esto:
>> >> >
>> >> > for (int x=0;x<c;x++)
>> >> > {
>> >> > Tarea= new Thread(new Threadstart(Mimetodo(x,y)));
>> >> > //Actualizacion de parametros
>> >> > }
>> >> > Y me dice que esperaba un metodo...
>> >> >
>> >> > Como me sugieres que lo implemente?
>> >> >
>> >> > un saludo
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > Octavio Hernandez wrote:
>> >> >> Hola,
>> >> >>
>> >> >> Para la sincronización de los hilos puedes utilizar el método
>> >> >> Thread.Join():
>> >> >>
>> >> >>
>> >> >> http://msdn.microsoft.com/library/d...nTopic.asp
>> >> >>
>> >> >> Leyendo este mensaje tuyo y el anterior, me da la impresión de que
>> >> >> debes
>> >> >> olvidarte de la idea de la "lanzadera" y simplemente poner el
>> >> >> código
>> >> >> que
>> >> >> tienes en ese hilo en el cuerpo del bucle dentro del que creas los
>> >> >> demás
>> >> >> hilos.
>> >> >>
>> >> >> Slds - Octavio
>> >> >>
>> >> >>
>> >> >> "Bodescu" escribió en el mensaje
>> >> >> news:OE%
>> >> >>> Hola a la comunidad:
>> >> >>>
>> >> >>> Mi problema es conseguir que se coordinen los threads:
>> >> >>>
>> >> >>> Utilizo un thread lanzadera, para llamar a un metodo al que hay
>> >> >>> que
>> >> >>> pasarle parametros. Inmediatamente despues de lanzado el metodo
>> >> >>> que
>> >> >>> pasa
>> >> >>> los params, estos deben actualizar su valor.
>> >> >>>
>> >> >>> El caso es que la creacion de los hilos es tan rapida que no da
>> >> >>> tiempo a
>> >> >>> los parametros a actualizar su valor, y me crea varios hilos
>> >> >>> iguales...
>> >> >>>
>> >> >>> Se os ocurre alguna idea?
>> >> >>>
>> >> >>> Gracias
>> >> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#15 Francisco Garrido (fcogarrido
24/05/2006 - 16:11 | Informe spam
Por cierto, el código que existe dentro de mi public void , la cual se
ejecutará en un thread, puede llamar a cualquier otro método de otra clase y
sin importar de tipo que sea, osea que devuelva algún valor o no?!

O por el contrario, cualquier sub que se llame desde una sub "principal" que
es donde se inicia el thread han de ser TODAS de tipo "valor devuelto void"?!

Existe algún tipo de restricción en este sentido?

Muchas Gracias Octavio!!!

"Octavio Hernandez" wrote:

Francisco,

No veo la posible razón. Sí ten cuidado con los índices del bucle, index
empieza en 1 no sé si aposta o por accidente...
En que instrucción concreta de la excepción al ejecutar paso a paso?

Slds - Octavio


"Francisco Garrido ()"
escribió en el
mensaje news:
> Hola Octavio!
>
> Pues cuando "debugo" la aplicación, me sale una ventanita de windows con
> este error:
>
> "An unhandled exception of type 'System.NullReferenceException' occurred
> in
> Unknown Module.
>
> Additional information: Object reference not set to an instance of an
> object."
>
> Qué puede ser?
>
>
> "Octavio Hernandez" wrote:
>
>> Hola, Francisco!
>>
>> ¿Qué es lo que no funciona?
>>
>> Slds - Octavio
>>
>>
>> "Francisco Garrido ()" <Francisco Garrido
>> ()@discussions.microsoft.com> escribió en el mensaje
>> news:
>> > Hola Octavio.
>> >
>> > Yo tengo algo parecido (array de threads) pero no funciona bien.
>> > En una clase tengo definida la variable del array de threads y luego,
>> > dentro
>> > de un bucle, controlado por una variable que voy incrementando, voy
>> > creando
>> > threads (llama a una función que está dentro de esta misma clase).
>> > Aquí tienes el código:
>> >
>> > public class DescomprimirZIP
>> > {
>> > ...
>> > Thread[] ArrayThreadsCarpetas = new Thread[50];
>> > ...
>> >
>> > public void SubirDocumentoYDescomprimir()
>> > {
>> > ...
>> > int indiceArrayThread = 0;
>> > for (int index=1;index<arrayCarpetas.Length;++index)
>> > {
>> > ...
>> > ArrayThreadsCarpetas[indiceArrayThread] = new Thread(new
>> > ThreadStart(subirCarpetaDescomprimida));
>> > ArrayThreadsCarpetas[indiceArrayThread].Start();
>> > indiceArrayThread = indiceArrayThread + 1;
>> > }
>> > }
>> >
>> > public static void subirCarpetaDescomprimida()
>> > {
>> > ...
>> > ...
>> > }
>> > }
>> >
>> > "Octavio Hernandez" wrote:
>> >
>> >> Bodescu,
>> >>
>> >> Lo que te quiería recomendar que hicieras es esto:
>> >>
>> >> Thread[] Hilo1 = new Thread[65]; // 0-64
>> >> for (int x=0;x<d;x++)
>> >> {
>> >> // llamar al método de la "lanzadera" en el hilo principal
>> >> // (para qué crear un nuevo hilo si tienes que esperar hasta
>> >> que
>> >> termine?)
>> >> MiMetodo(x, y);
>> >> // crear el hilo, ya teniendo el valor de 'y'
>> >> // aquí ya sigue las indicaciones de Vyacheslav sobre el hilo
>> >> con
>> >> un
>> >> parámetro
>> >> Hilo1[x] = new Thread(...)
>> >> Hilo1[x].Start();
>> >> }
>> >>
>> >> Salu2 - Octavio
>> >>
>> >>
>> >>
>> >> "Bodescu" escribió en el mensaje
>> >> news:
>> >> > Hola Octavio, gracias por tu respuesta.
>> >> >
>> >> > La cosa es tal que asi:
>> >> >
>> >> > for (int x=0;x<c;x++)
>> >> > {
>> >> > Tarea= new Thread(new Threadstart(Lanzadera));
>> >> > //Actualizacion de parametros
>> >> > }
>> >> >
>> >> > Si no uso la lanzadera, me pasa esto:
>> >> >
>> >> > for (int x=0;x<c;x++)
>> >> > {
>> >> > Tarea= new Thread(new Threadstart(Mimetodo(x,y)));
>> >> > //Actualizacion de parametros
>> >> > }
>> >> > Y me dice que esperaba un metodo...
>> >> >
>> >> > Como me sugieres que lo implemente?
>> >> >
>> >> > un saludo
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > Octavio Hernandez wrote:
>> >> >> Hola,
>> >> >>
>> >> >> Para la sincronización de los hilos puedes utilizar el método
>> >> >> Thread.Join():
>> >> >>
>> >> >>
>> >> >> http://msdn.microsoft.com/library/d...nTopic.asp
>> >> >>
>> >> >> Leyendo este mensaje tuyo y el anterior, me da la impresión de que
>> >> >> debes
>> >> >> olvidarte de la idea de la "lanzadera" y simplemente poner el
>> >> >> código
>> >> >> que
>> >> >> tienes en ese hilo en el cuerpo del bucle dentro del que creas los
>> >> >> demás
>> >> >> hilos.
>> >> >>
>> >> >> Slds - Octavio
>> >> >>
>> >> >>
>> >> >> "Bodescu" escribió en el mensaje
>> >> >> news:OE%
>> >> >>> Hola a la comunidad:
>> >> >>>
>> >> >>> Mi problema es conseguir que se coordinen los threads:
>> >> >>>
>> >> >>> Utilizo un thread lanzadera, para llamar a un metodo al que hay
>> >> >>> que
>> >> >>> pasarle parametros. Inmediatamente despues de lanzado el metodo
>> >> >>> que
>> >> >>> pasa
>> >> >>> los params, estos deben actualizar su valor.
>> >> >>>
>> >> >>> El caso es que la creacion de los hilos es tan rapida que no da
>> >> >>> tiempo a
>> >> >>> los parametros a actualizar su valor, y me crea varios hilos
>> >> >>> iguales...
>> >> >>>
>> >> >>> Se os ocurre alguna idea?
>> >> >>>
>> >> >>> Gracias
>> >> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida