Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Hilos y ExecuteAndWait

Hola a todos, estoy haciendo una aplicacion multihilos para respaldar la base de datos, para ello utilizo el procedimiento ExecuteandWait del amigo Delphi.com.ar para el que no la conozca:

Código Delphi [-]
procedure THFirebird.ExecuteAndWait( ACommand : String );
var
  StartInfo   : STARTUPINFO;
  ProccesInfo : PROCESS_INFORMATION;
  ExitCode    : Cardinal;
begin
  ZeroMemory( @StartInfo, SizeOf(STARTUPINFO) );
  with StartInfo do
  begin
    cb          := SizeOf(STARTUPINFO);
    dwFlags     := STARTF_USESHOWWINDOW;
    wShowWindow := SW_HIDE;
  end;
  Win32Check( CreateProcess(nil, PChar(ACommand) ,nil, nil, FALSE,
                            CREATE_NEW_CONSOLE, nil, nil, StartInfo, ProccesInfo) );
  repeat
    Application.HandleMessage;
    GetExitCodeProcess(ProccesInfo.hProcess, ExitCode);
  until ExitCode <> STILL_ACTIVE;
end;

el llamado lo hago asi:

Código Delphi [-]
cComprimir := 'LHA a ' + chRespaldo + ' ' + chRespaldo + '.FBK';
   cRespaldo := gBak + chRuta  + ' ' + chRespaldo + '.FBK';   
   ExecuteAndWait(cRespaldo);
   ExecuteAndWait(cComprimir);

el problema consiste en que en que siempre entra al primer ExecuteAndWait, tanto si coloco el respaldo como la compresion, pero ya no vuelve al execute del hilo.

Yo creo que algunas de las cosas de la funcion ExecuteAndWait interrumpen el hilo, pero es solo una teoria ya que no se en realidad como trabaja.

Si alguien se le ocurre algo...

Muchas gracias por leerme
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #2  
Antiguo 01-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No me queda claro algo. ¿Qué se supone que hay que "pasar" en "command"? Si es la ruta de algún programa... más los comandos necesarios, no parece que sea eso lo que estás pasando, ¿no? Por otro lado, y, si no me equivoco, se supone que el procedimiento en cuestión ejecuta "algo" y espera su término. ¿Estás seguro de que se ejcuta ese "algo"? ¿Y de que termina?

En fin... añado preguntas a tus preguntas... mal vamos. Pero, espero que ya encontrases la solución, o que te ayude algo lo que digo, o que algún compañero, al revivir este hilo, sepa decirte algo más que pueda ayudarte.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 01-12-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,
Hola Dec, gracias por el interes..

Cita:
Empezado por dec Ver Mensaje
No me queda claro algo. ¿Qué se supone que hay que "pasar" en "command"? Si es la ruta de algún programa...
Command recibe una sentencia, estilo shellexecute, con la diferencia que al ejecutarlo con ExecandWait este espera qe termine la ejecucion y sigue en la otra linea.

Cita:
Empezado por dec Ver Mensaje
más los comandos necesarios, no parece que sea eso lo que estás pasando,
¿no?
Si hay esto pasando los comandos que se necesitan, si te fijas en las variables mira como se arman:

Código Delphi [-]
cComprimir := 'LHA a ' + chRespaldo + ' ' + chRespaldo + '.FBK';

donde chrespaldo es el archivo donde se va a comprimir, el mismo caso del procedimiento para comprimir.


Cita:
Empezado por dec Ver Mensaje
Por otro lado, y, si no me equivoco, se supone que el procedimiento en cuestión ejecuta "algo" y espera su término. ¿Estás seguro de que se ejcuta ese "algo"? ¿Y de que termina?
si se ejecuta, por eso digo que solo se ejecuta el primer comando, ya el segundo no se ejecuta, y estoy seguro que se ejecuta porq el respaldo se genera, y si cambio el orden tambien lo comprime.


Cita:
Empezado por dec Ver Mensaje
En fin... añado preguntas a tus preguntas... mal vamos. Pero, espero que ya encontrases la solución, o que te ayude algo lo que digo, o que algún compañero, al revivir este hilo, sepa decirte algo más que pueda ayudarte.
Aun no he encontrado la solucion, pero creo que el asunto va con el createprocess y su compatibilidad con los thread estoy buscando informacion al respecto pero no encuentro nada

Gracias por el interes
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
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
Hilos johurgi Varios 2 16-07-2007 10:57:08
¿Se pierden hilos? Casimiro Notevi La Taberna 17 26-06-2006 15:51:21
ver hilos Cosgaya Varios 1 07-06-2005 20:35:16
Hilos con COM urush30 Varios 0 21-09-2004 10:07:37


La franja horaria es GMT +2. Ahora son las 07:04:59.


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