Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2008
pulpin pulpin is offline
Miembro
 
Registrado: feb 2008
Ubicación: medellin,colombia
Posts: 53
Poder: 19
pulpin Va por buen camino
no porque mi hilo esta en ejecucion y la funcion necesariamente se tiene que detener durante ese tiempo mientras le llegan otros datos, cuando espera el rsto de mi programa deberia estar en funcionamiento normal.

cuando recibe los datos el hilo sigue su funcionamiento normalmente.

eje:

Form
{
codigo form incluyendo botones y demas;
invoco la funcion recibo datos(desde una dll);
}
inicio de hebra
{
recibo datos(estafuncion contiene el wait.....); //aqui es donde se para //todo mi programa por 3 segundos, cada que pasa por este sitio, y solo //deberia parar en el hilo.
}

espero ser mas ilustrativo
Responder Con Cita
  #2  
Antiguo 23-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El problema es que WaitForSingleObject para todo. Lo que no entiendo es si la llamas tú o si lo hace la dll. Si la llamas tú, sabrás cual es el proceso que esperas que termine... No debería llamarse desde un hilo pues deja de tener sentido ese hilo.

Si puedes:

Código:
función(...)
{
   .
   .
   // Necesito datos.
   Abro hilo que me da datos
   
  //espero datos. Mi aplicación no se detendrá, pero si esta función.
   for(;hilo->Terminado==false;) Application->ProcessMessages();
  
  // Ya tengo los datos y sigo con la función
  .
  .
}

¿Te sirve?

Saludos.
Responder Con Cita
  #3  
Antiguo 23-04-2008
pulpin pulpin is offline
Miembro
 
Registrado: feb 2008
Ubicación: medellin,colombia
Posts: 53
Poder: 19
pulpin Va por buen camino
pues escafranda desafortunadamente no puedo escaparme del waitforsingleobject ya que este esta dentro del codigo de la dll y es necesario .

Responder Con Cita
  #4  
Antiguo 23-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Mala cosa. Revisa esto, aunque posiblemente lo has hecho.

Dices que tienes el código fuente de esa dll.... Podrias modificarla y recompilarla. Sólo es una idea aunque posiblemente la peor.

Saludos.


EDITO:

Mira WaitForMultipleObjects también por si te sirve.

Última edición por escafandra fecha: 23-04-2008 a las 19:32:16.
Responder Con Cita
  #5  
Antiguo 25-04-2008
pulpin pulpin is offline
Miembro
 
Registrado: feb 2008
Ubicación: medellin,colombia
Posts: 53
Poder: 19
pulpin Va por buen camino
igualmente gracias por tu ayuda escafranda, voy a ver como puedo resolver este inconveniente, espero no se me salga de las manos.

post: tu siempre salvandome de tanto enredo, ya te debo como 5.
Responder Con Cita
  #6  
Antiguo 07-05-2008
pulpin pulpin is offline
Miembro
 
Registrado: feb 2008
Ubicación: medellin,colombia
Posts: 53
Poder: 19
pulpin Va por buen camino
aun sigo en problemas

bueno estube investigando, sobre waitformultipleobjects, y segun lo que lei si utilizo esta funcion puedo evitar que los demas hilos se interrunmpan, estoy en lo correcto o no puedo usarlo para este motivo, espero tu opinion?

por ultimo alguna idea de como hacer el cambio.

Última edición por pulpin fecha: 07-05-2008 a las 04:10:51.
Responder Con Cita
  #7  
Antiguo 07-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bueno, por lo que dices, te debes haber decidido por recompilar la dll. En principio lo fácil sería hacer ese cambio que apuntas. Cambiar la función
DWORD WINAPI WaitForSingleObject(
__in HANDLE hHandle,
__in DWORD dwMilliseconds
);[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]

por:

[/font]DWORD WINAPI WaitForMultipleObjects(
__in DWORD nCount,
__in const HANDLE* lpHandles,
__in BOOL bWaitAll,
__in DWORD dwMilliseconds
);

La diferencia es que el hilo lo debes pasar como una matriz de hilos, es decir un puntero al handle en cuestión. En nCount pones 1 (un sólo hilo). En este caso bWaitAll no tiene mucho sentido, colócalo en true.

Por último aquí tienes más información: WaitForSingleObject y WaitForMultipleObjects

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 00:16:30
Thread y Form progmaq Varios 4 31-03-2005 14:16:50
Problema con Thread e Indy diegofhernando Varios 3 30-03-2005 22:20:24
Problema cerrando un thread tortelini Varios 0 14-03-2005 15:21:16
Hilos o Thread DarkByte Varios 7 20-11-2003 17:10:44


La franja horaria es GMT +2. Ahora son las 21:01:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi