FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. Gracias |
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
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. |
|
|
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 |
|