cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
18 sept. 2005 à 23:03
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
19 sept. 2005 à 21:50
Bonsoir,
Voici mon code ci-dessous c'est un exemple
Il surveille la fermeture d'un process
Mais je me suis rendu compte que dans le gestionnaire de taches il occupait entre 80% et 100% tout le temps de la boucle while.
Quelqu'un a t-il une idée pour faire baisser la charge cpu? Dois-je utiliser autre chose qu'un While ??? Ma fonction de test IsProcessRunning est-elle trop lourde avec elle aussi une boucle for ???
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 19 sept. 2005 à 02:19
C'est vrai qu'en .net ont oublit vite les api...
Mais je rencontre un petit soucis je n'arrive pas à récupérer le handle de n'importe quel fenetre !
En fait pour etre clair à un moment donné j'execute une ligne de commande "Rundll32.exe advapi32.dll,ProcessIdleTasks" (réinit. le prefetcher).
Je dois afficher dans un label un message tant que le process "rundll32.exe" existe
Donc je ne sais pas si le FindWindow peut marcher avec puisqu'il n'y a pas de fenetre !
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 19 sept. 2005 à 02:50
BruNews,
J'ai laissé tomber les api j'ai trouvé ce qu'il me fallait dans le framework
Mon code ci-dessous marche c'est à dire que je lance un process et dès que celui se termine j'ai un message qui s'affiche dans un label.
Mais le problème c'est que mon appli reste bloqué tant que le process lancé n'est pas terminé !
Je ne comprend pas trop !!
Si tu avais une petite idée... Merci
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 sept. 2005 à 09:34
L'attente de fin du processus doit se trouver en thread séparé sinon tu bloques le prog.
Lance le processus par ShellExecuteEx (ou truc du framework si existe) pour avoir un handle de processus et suis le principe que je t'ai mis plus haut.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 19 sept. 2005 à 20:34
OK merci BruNews cela marche maintenant mon appli ne se bloque plus mais de ce fait cela me pose un problème.
Dans le thread créer ou je lance le process et que j'attend sa fermeture et bien je dois modifier un objet label qui ne se trouve pas dans le meme thread que ce thread du process. Alors je doit faire un deleguate pour resynchroniser mon objet mais cela ne marche pas car mon sub de deleguation se trouve dans le thread principal alors mon prog se bloque comme tu avais dis auparavant !
Je ne sais pas trop quoi faire
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 sept. 2005 à 20:45
Alors la c'est trop frameworkien pour moi, tout ceci est si simple en C...
Un "label qui se trouve dans un thread", voila bien un truc qui n'a pas de sens Windowsement parlant, son handle est connu et unique pour tout le système.
Ne te semblent pas délirantes et insupportables toutes ces con****ies de langage interprété ?
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 19 sept. 2005 à 21:50
Oui je suis assez d'accord avec toi !
Mais j'utilise le framework 2 et ses une nouveauté (sécurité) le fait qu'un thread ne puisse pas modifier un objet d'un autre thread.
Mais bon c'est un débat sans fin le framework, il y a les puristes qui préférent le c ou c++ et ceux qui préférent la simplicité et la soupleese comme ce qu'offre le framework
Sinon te casses plus la tête j'ai trouvé une autre méthode c'est pas grave je me suis débrouillé.
Je vais valider ta première réponse c'est celle la qui ma mis sur la voie :)
Merci