Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 20-02-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Red_Leon Ver Mensaje
Vale, creo que en código no esta nada mal.

Desde un formulario creo este hilo, pero es la única referencia que hago al hilo.

Mi pregunta es, si yo no llamo a al hilo.Terminate, que no lo hago, ¿quien termina este hilo? ¿hasta cuando esta en ejecución?

Yo al cerrar la aplicación, veo como el hilo se termina, la aplicación no se queda bloqueada ni abierta ¿por qué?

Si cierro la aplicación mientras esta sincronizando la base de datos salta este error: "La operación no se puede realizar de forma asincrona" y a continación se cierra la aplicación, dejando la sincronización a medias.

Lo que realmente me gustaría es que la aplicación no se cerrase asta que la sincronización este terminada.

O que el hilo siguiera la ejecución aunque la aplicación estuviese cerrada.

¿Que sería lo mas recomendable y alguna idea de que hacer?

Muchas gracias de antemano.
Antes de nada, sólo un comentario. Como has puesto pseudocódigo, no se acaba de ver cómo realizas la sincronización de la Base de Datos.
(a) Si la sincronización de la BD la haces con Synchonize piensa que todo ese trabajo se hace en el hilo principal, es decir, no aprovecha realmente el potencial del hilo.
(b) Si la sincronización de la BD la heces desde dentro del hilo, sin Synchronize, piensa que deberás definir conexión y componentes nuevos dentro del hilo, ya que estos no son thread-safe.

El hilo debería terminar cuando finalize su trabajo o cuando alguien se lo indique. Es decir puedes utilizar condiciones como estas en el hilo; Dependerá del trabajo que tenga que realizar y de si "acaba sólo" o no. Si no acaba por sí sólo, alguien (la aplicación principal) deberá llamar al Terminate.

* while not Terminated do begin
* while (not SQL.EOF) do begin
* while (condicion) do begin
* while (true) do begin

Al cerrar tu aplicación la variable del thread se destruirá y eso manda ejecutar de forma automática el Terminate. Revisa el destroy de la clase TThread. de ahí que el thread termine.

De todas formas no seria la manera más correcta de hacerlo, ya que si la aplicación se está cerrando (destruyéndose cosas) y el thread está sincronizando (por ejemplo) puedes tener errores. Para ello creo que deberías mirar la ayuda del método WaitFor.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
 


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 calco_hugo Varios 6 26-07-2010 20:12:50
Thread Paulao Varios 1 09-05-2008 00:42:34
Thread y showmodal jef Varios 32 07-12-2007 23:55:35
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


La franja horaria es GMT +2. Ahora son las 13:01:52.


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