| |
Miembro registrado 34 mensajes |
|
| Publicado el 21,noviembre 2018 - 16:41 |
Bonjour à tous.
Je me retrouve confronté à une notion que je ne maîtrise pas très bien (les threads en l'occurrence) et j'aimerai faire ceci :
Au lancement du code de projet (donc aucune fenêtre ouverte), je souhaite ouvrir une fenêtre en arrière plan. Celle-ci fait un traitement avec des requêtes SQL. Pendant ce temps, dans le thread principal, le code du projet doit continuer de s'exécuter et lancer la première fenêtre.
Apparemment, on ne peut pas ouvrir un écran dans un thread secondaire. J'ai vu un bloc d'aide avec un postmessage mais celui-ci doit avoir un handle en paramètre ... le problème, c'est que je n'ai pas de handle puisque aucune fenêtre n'est ouverte !
Une idée ?
Cédric D. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 281 mensajes |
|
| Publicado el 21,noviembre 2018 - 20:04 |
Bonsoir,
Pourquoi avoir besoin d'ouvrir une fenêtre ? Lancez une tâche parallèle (ou thread secondaire) au lancement du projet ou de votre fenêtre principale.Mensaje modificado, 21,noviembre 2018 - 20:04 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 34 mensajes |
|
| Publicado el 22,noviembre 2018 - 09:22 |
Bonjour,
Merci Damien. L'objectif est de voir un avancement visuel dans la barre des tâches. Donc une fenêtre, même look que l'appli, qui fait son traitement et se ferme. Dans l'esprit, je pense comme toi, à savoir une tâche sans fenêtre qui se lance mais mes instances hiérarchiques sont plutôt fermées sur ma (ta) proposition. La difficulté supplémentaire est que l'exécutable peut recevoir en ligne de commande le nom de la première fenêtre à lancer.
Je sais bien que ma demande est un peu tarabiscotée mais je vais être obligé de faire du codage cracra (manque de temps oblige ... 1 journée de dev !!). Et dans 5 ans, avec les probables avancées ou facilités Windev sur ce point , un développeur, en voyant le code, dira : "c'est quoi ce truc de m.. 
A+
Cédric |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.323 mensajes |
|
| Publicado el 22,noviembre 2018 - 09:58 |
Bonjour,
Pourquoi ne pas lancer un sous-programme indépendant ? Pourquoi ne pas ouvrir la fenêtre principal avec la barre de défilement en bas et un message d'attente ? Pourquoi ne pas exécuter ce que tu appelles le "code du projet" dans l'initialisation de la fenêtre principale ? J'espère que tu trouvera des pistes dans tout cela.
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 22,noviembre 2018 - 09:58 |
Bonjour,
S'agit il d'une application avec fenetres MDI ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 34 mensajes |
|
| Publicado el 22,noviembre 2018 - 14:15 |
Bonjour Francois,
Non. Pas de MDI |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 22,noviembre 2018 - 14:42 |
Il faudrait faire un 'ouvreFille()' depuis la premiere fenetre du projet (ainsi elle sera non modale) Cette fenetere exécutera la procédure dans un thread secondaire. Plus qu'a gérer une jauge pour afficher l'avancement |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 34 mensajes |
|
| Publicado el 22,noviembre 2018 - 15:31 |
| Oui mais le traitement doit avoir lieu avant le lancement de la 1ere fenêtre. Et le 5eme position de la ligne de commande détermine quelle sera la "première fenêtre" à lancer. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 34 mensajes |
|
| Publicado el 22,noviembre 2018 - 15:37 |
| Je vais essayer de lancer une fenêtre invisible en tout premier et de lancer le thread depuis celle-ci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 23,noviembre 2018 - 10:41 |
Je n'ai pas du bien comprendre la demande alors..
Ta demande initiale : je souhaite ouvrir une fenêtre en arrière plan
Ensuite : Oui mais le traitement doit avoir lieu avant le lancement de la 1ere fenêtre
Puis finalement : Je vais essayer de lancer une fenêtre invisible en tout premier
Je t'avoue ne pas bien comprendre ton besoin finalement ... Tu veux ouvrir une fenêtre ou pas durant ton traitement finalement ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 23 mensajes |
|
| Publicado el 25,noviembre 2018 - 11:48 |
Bonjour,
Pourquoi la première fenêtre de votre projet ne serais pas cette fenêtre qui au moment voulu ferait un ouvrefille() afin d'ouvrir la fenêtre principale ?
Le code de la fenêtre continuerait à s'exécuter et elle pourra se fermer a la fin du traitement.
-- Cordialement,
Franck MATIGNON |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 23 mensajes |
|
| Publicado el 25,noviembre 2018 - 17:08 |
Pour aller un peu loin si le code exécuté dans la fenêtre d’ouverture est exécutée dans un thread, il faudra créer une procédure locale avec le code ouvrefille() et l’apeller avec executethreadprincipal(procédure)
-- Cordialement,
Franck MATIGNON |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes |
|
| Publicado el 27,noviembre 2018 - 14:02 |
D'accord avec François C. ce qui se conçoit bien s'exprime clairement
et clairement là ce n'est pas le cas.
et pour les moins perspicaces d'entre nous (comme moi) , avec un schema fonctionnel ça aurait été mieux...Mensaje modificado, 27,noviembre 2018 - 14:02 |
| |
| |
| | | |
|
| | |