![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
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 ![]() |
|
#2
|
||||
|
||||
|
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. |
|
#3
|
|||
|
|||
|
pues escafranda desafortunadamente no puedo escaparme del waitforsingleobject ya que este esta dentro del codigo de la dll y es necesario .
![]() |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
|||
|
|||
|
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. ![]() |
|
#6
|
|||
|
|||
|
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. |
|
#7
|
||||
|
||||
|
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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|