Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Porque WaitForMultipleObjects bloquea mi aplicacion y otras funciones?

hola amigos, estoy intentando monitorear el cambio de una carpeta , es decir, que me genere un evento al crear una carpeta nueva....ya tengo la funcion, el problema es que me bloquea la aplicacion misma, y algunas otras funciones de windows.....
el codigo es este,,,
Código:
HANDLE   dwChangeHandles[2];
      dwChangeHandles[0]   =   FindFirstChangeNotification(
          "C:\\contar",
          FALSE,
          FILE_NOTIFY_CHANGE_FILE_NAME);
      if   (dwChangeHandles[0]   ==   INVALID_HANDLE_VALUE)
          ExitProcess(GetLastError());
      dwChangeHandles[1]   =   FindFirstChangeNotification(
          "C:\\contar",
          TRUE,
          FILE_NOTIFY_CHANGE_DIR_NAME);
      if(dwChangeHandles[1]   ==   INVALID_HANDLE_VALUE)
          ExitProcess(GetLastError());
      while   (TRUE)
      {
          if(WaitForMultipleObjects(2,   dwChangeHandles,
                  FALSE,   INFINITE)!=WAIT_OBJECT_0)break;
          ShowMessage("Cambio!   ");
          if(FindNextChangeNotification(dwChangeHandles[0])   ==   FALSE)//????
                  break;
          if   (FindNextChangeNotification(dwChangeHandles[1])   ==   FALSE)
                  break;
      }
      Memo1->Lines->Add(WaitForMultipleObjects(2,   dwChangeHandles,
                  FALSE,   INFINITE)) ;
      ShowMessage("end");       // Muestra esto cuando se crea o se elimina una carpeta.
Que puedo hacer para que funcione "normalmente" ?
Gracias
Responder Con Cita
  #2  
Antiguo 08-12-2009
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Me temo que llego muy tarde con mi respuesta, pero la publico por si pudiera servir a alguien mas, y por que no, a vos si no lo has resuelto, ya que ahora, investigando un poco sobre "espiar" un directorio, llegué a este hilo.

La naturaleza de las llamadas a funciones Wait* del API... es esa, esperar (de allí su nombre)

Si pretendes tener una aplicación que trabaje "normal", mientras espera, lo que podes hacer es invocar a la función wait en un hilo secundario, y que este notifique al hilo principal cuando el objeto (u objetos) que estas "esperando" son señalados.

Encontré un componente que hace precisamente esto sobre un directorio. No lo he probado, pero viendo el código, parece que funcionará, así que te dejo una liga para que podas probarlo por vos mismo.

http://www.angusj.com/delphi/dirwatch.html

Un saludo
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 09-12-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Al menos en Delphi 7\Demos\Shellcontrols tienes el componente TShellChangeNotifier que parece hace eso mismo, sólo es cuestión de instalar el componente que aparece en dicha carpeta, (no lo he probado)
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



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
Por que no funciona SUM y otras funciones al jalarlo desde delphi? desve MySQL 2 11-06-2007 22:18:20
Applyupdates me bloquea la aplicación jmlifi Conexión con bases de datos 4 29-05-2007 14:37:45
Un Aplicacion Server y otras clientes Sr.Scorpion Varios 1 09-05-2005 21:05:09
La aplicacion se bloquea al escribir en un Tcombo dabas Varios 2 03-09-2004 11:04:28
Se me Bloquea la aplicacion josejuanm SQL 2 26-05-2003 07:54:54


La franja horaria es GMT +2. Ahora son las 21:42:40.


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