Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2005
nicohug nicohug is offline
Registrado
 
Registrado: oct 2005
Posts: 9
Poder: 0
nicohug Va por buen camino
Gracias por la bienvenida

Bueno lo que necesito hacer es lo siguiente: en un servicio web implemento una funcion del lado del servidor que un punto lanzo x numero de hilos que realizan un trabajo en conjunto. La cuestion es que luego que lanzo los hilos debo esperar que todos terminen su trabajo y asi devolver el correspondiente resultado. En una aplicacion normal una forma de resolverlo es simplemente: lanzo los hilos y coloco un ciclo como el que sigue:

while not SeDetuvieronLosHilos do
Application.processMessages;

Siendo "SeDetuvieronLosHilos" una variable buleana global que cuando se terminan los hilos pasa a ser true. De esta forma tranco el metodo hasta que se terminen los hilos sin tildar la aplicacion.
Ahora el problema es que, como bien alguien me respondio, el metodo "processMessages" es de la clase TApplication, y esa clase no esta cuando se esta haciendo una SoapApplication del lado del servidor, ya sea con CGI o ISAPI. La pregunta es: como consigo el mismo resultado, es decir esperar a que termine una serie de hilos lanzados, en un servicio web (del lado del server)
Responder Con Cita
  #2  
Antiguo 20-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Veo que metí la pata por no leer convenientemente. Lo que yo leí (mal) fue algo que tuviera que ver con un Servicio de Windows, y no con un WebService, con los que además no tengo experiencia ninguna: con los primeros tengo poca, pero algo, al menos.

No sé ahora qué responderte. Se me ocurre algo que creo que se planteó alguna vez en estos Foros como una posible solución: si estás empleando "TThread", creo que podrías valerte de los métodos de dicha clase; si no me equivoco cuentan con alguno que "te avisará" cuando se termine la ejecución de un Hilo en concreto. Así podría hacerse con los demás, supongo, esperando cooperar en algo, vaya.

Aquí la descripción del método "Terminate" de la clase "TThread":


Cita:
Empezado por Ayuda de Delphi
Signals the thread to terminate by setting the Terminated property to true.

Terminate sets the thread’s Terminated property to true, signaling that the thread should be terminated as soon as possible.

For Terminate to work, the thread's Execute method and any methods that Execute calls should check Terminated periodically and exit when it's true.

Unlike the Windows API TerminateThread, which forces the thread to terminate immediately, the Terminate method merely requests that the thread terminate. This allows the thread to perform any cleanup before it shuts down.
__________________
David Esperalta
www.decsoftutils.com
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


La franja horaria es GMT +2. Ahora son las 10:52:46.


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