FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Esperar a que un Thread se ejecute
Esperar a que un Thread se ejecute
Débuté par Javier Camales, 02 juil. 2015 10:55 - 3 réponses
Connectez-vous…
Javier Camales
#1
Posté le 02 juillet 2015 - 10:55
Buenos días. tengo el siguiente problema:
En una ventana, tras seleccionar una serie de parámetros, ejecuto un proceso que importa datos de una base de datos MS Access. El proceso funciona correctamente pero cuando el fichero Access es muy grande aparece el mensaje No Responde de Windows y da la sensación de que está colgado.
Para resolverlo muestro una ventana (openchild) con un gif animado y un mensaje "Espere por favor" y después lanzo el proceso que importa los datos utilizando la instrucción threadexecute.
Lo que hace el proceso es crear una estructuras para importar las tablas del fichero access. Primer creo todas las estructuras e importo los datos y despues paso los registros importados a los ficheros windev de mi aplicación. El problema está en que si ejecuto el proceso con la orden threadexecute no hace nada, aparece la ventana de espera y se cierra como si el thread hubiese terminado. Si pongo un info después de la instrucción threadexecute entonces sí se ejecuta.
Creo que el problema está en que al lanzar el thread el control retorna al proceso pincipal (que es donde se cierra el mensaje de espera y la ventana desde la que se hace todo este proceso) y finaliza sin que el thread termine.
¿Puedo de algún modo esperar a que el trhead se ejecute antes de continuar el proceso? Uso Windev 18
El proceso que lanzo desde el click de un botón es:
OpenChild(WIN_Espera,"Importando datos, espere por favor")
ThreadExecute("Importar_Datos",threadNormal,Proc_Importar)
Close(WIN_Espera)
Close()
Saludos
Signaler
0
0
Agustín
#2
Posté le 06 juillet 2015 - 09:01
Hola Javier, podrías utilizar lo siguiente:
NextTitle("Mensaje que quieres mostrar")
HourGlass(True)
ThreadExecute("Importar_datos",threadUseHyperFile,Proc_Importar)
WHILE ThreadState("Importar_datos")=threadRunning
Multitask(-5)
END
HourGlass(False)
Saludos
Signaler
0
0
Javier Camales
#3
Posté le 06 juillet 2015 - 15:21
Muchas gracias Agustín.
Signaler
0
0
Rubén Sánchez Peña
#4
Posté le 05 septembre 2015 - 16:59
Hola. La solucion aportada me parece correcta ya que es lo que se ha solicitado. Lo que no entiendo es cual es la ventaja de hacer todo el procesamiento de la importacion en otro thread. No se realiza ningun trabajo en paralelo. El programa permanece parado en el thread principal mientras termina el thread secundario. Usando Multitask periodicamente en el procedimiento de importación tambien eliminarias el mensaje de que el programa no responde sin tener que utilizar un thread adicional.
Rubén Sánchez Peña
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WEBDEV 2024
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte