Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rendre la main à windows dans une boucle

7 réponses
Avatar
Frédéric LAMBOUR
Mon application windows fait un traitement assez long dans une boucle.

Durant toutes la durée de ce traitement le gestionnaire des tâches indique
Pas de réponse pour mon application.
Comment rendre la main à windows dans ma boucle pour obtenir un état : en
cours exécution ?

J'ai essayé Refresh() mais sans résultat (autre que graphique).

7 réponses

Avatar
Lebrun Thomas
Utilisez un thread différent pour effectuer le traitement de votre boucle.
Ainsi, vous n'aurez plus ce problème.

A+

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

Mon application windows fait un traitement assez long dans une boucle.

Durant toutes la durée de ce traitement le gestionnaire des tâches indique
Pas de réponse pour mon application.
Comment rendre la main à windows dans ma boucle pour obtenir un état : en
cours exécution ?

J'ai essayé Refresh() mais sans résultat (autre que graphique).





Avatar
Frédéric LAMBOUR
Ya pas plus simple ?

"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
Utilisez un thread différent pour effectuer le traitement de votre boucle.
Ainsi, vous n'aurez plus ce problème.

A+

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

> Mon application windows fait un traitement assez long dans une boucle.
>
> Durant toutes la durée de ce traitement le gestionnaire des tâches


indique
> Pas de réponse pour mon application.
> Comment rendre la main à windows dans ma boucle pour obtenir un état :


en
> cours exécution ?
>
> J'ai essayé Refresh() mais sans résultat (autre que graphique).
>
>
>


Avatar
David Scime
Disons que la création de Thread's est bien simplifiée grâce au
frameword .NET...
Utilise la classe Thread de l'espace de nom System.Thread ..

Ce n'est pas bien compliqué.. tu crées un délégué "ThreadStart" qui
référence la méthode qui doit être exécutée par le thread. Et tu
crées ton objet Thread avec le ThreadStart en argument du
constructeur. Ensuite tu appelles la méthode Start de la fonction
Thread qui démarrera ta fonction qui sera exécutée en partage avec les
autres processus.

---> Vers le threading en .NET
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemthreadingthreadmemberstopic.asp

David Scime



Le Mon, 2 Aug 2004 14:03:57 +0200, "Frédéric LAMBOUR"
a écrit :

Ya pas plus simple ?

"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
Utilisez un thread différent pour effectuer le traitement de votre boucle.
Ainsi, vous n'aurez plus ce problème.

A+

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

> Mon application windows fait un traitement assez long dans une boucle.
>
> Durant toutes la durée de ce traitement le gestionnaire des tâches


indique
> Pas de réponse pour mon application.
> Comment rendre la main à windows dans ma boucle pour obtenir un état :


en
> cours exécution ?
>
> J'ai essayé Refresh() mais sans résultat (autre que graphique).
>
>
>





Avatar
Frédéric LAMBOUR
Il suffit de faire Application.DoEvents() dans la boucle (à intervalle
régulié) et le tour est joué !
C'est bien les Thread mais j'étais persuadé que je pouvais m'en passer.

"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
Utilisez un thread différent pour effectuer le traitement de votre boucle.
Ainsi, vous n'aurez plus ce problème.

A+

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

> Mon application windows fait un traitement assez long dans une boucle.
>
> Durant toutes la durée de ce traitement le gestionnaire des tâches


indique
> Pas de réponse pour mon application.
> Comment rendre la main à windows dans ma boucle pour obtenir un état :


en
> cours exécution ?
>
> J'ai essayé Refresh() mais sans résultat (autre que graphique).
>
>
>


Avatar
Frédéric LAMBOUR
Application.DoEvents() !

"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
> Ya pas plus simple ?

Je ne pense pas : si votre boucle s'execute dans votre thread principal,


et qu'elle est un peu longue, elle boquel l'application.
Vous pouvez executer cette boulce dans un autre thread, ou alors, suivant


le contenu de la boucle en question, utiliser des fonctions permettant
d'éviter ce genre de plantage (ex: fonction asynchrone, etc....)

A+

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

> Ya pas plus simple ?
>
> "Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message


de
> news:
> > Utilisez un thread différent pour effectuer le traitement de votre


boucle.
> > Ainsi, vous n'aurez plus ce problème.
> >
> > A+
> >
> > --
> > LEBRUN Thomas
> > http://morpheus.developpez.com
> >
> >
> > "Frédéric LAMBOUR" a écrit :
> >
> > > Mon application windows fait un traitement assez long dans une


boucle.
> > >
> > > Durant toutes la durée de ce traitement le gestionnaire des tâches
> indique
> > > Pas de réponse pour mon application.
> > > Comment rendre la main à windows dans ma boucle pour obtenir un état


:
> en
> > > cours exécution ?
> > >
> > > J'ai essayé Refresh() mais sans résultat (autre que graphique).
> > >
> > >
> > >
>
>
>


Avatar
Frédéric LAMBOUR
Il suffit de faire Application.DoEvents() dans la boucle (à intervalle
régulié) et le tour est joué !

"Frédéric LAMBOUR" a écrit dans le message
de news:
Mon application windows fait un traitement assez long dans une boucle.

Durant toutes la durée de ce traitement le gestionnaire des tâches indique
Pas de réponse pour mon application.
Comment rendre la main à windows dans ma boucle pour obtenir un état : en
cours exécution ?

J'ai essayé Refresh() mais sans résultat (autre que graphique).




Avatar
Lebrun Thomas
Effectivement, je n'avais pas pensé à cette méthode... :

--
LEBRUN Thomas
http://morpheus.developpez.com


"Frédéric LAMBOUR" a écrit :

Il suffit de faire Application.DoEvents() dans la boucle (à intervalle
régulié) et le tour est joué !
C'est bien les Thread mais j'étais persuadé que je pouvais m'en passer.

"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
> Utilisez un thread différent pour effectuer le traitement de votre boucle.
> Ainsi, vous n'aurez plus ce problème.
>
> A+
>
> --
> LEBRUN Thomas
> http://morpheus.developpez.com
>
>
> "Frédéric LAMBOUR" a écrit :
>
> > Mon application windows fait un traitement assez long dans une boucle.
> >
> > Durant toutes la durée de ce traitement le gestionnaire des tâches
indique
> > Pas de réponse pour mon application.
> > Comment rendre la main à windows dans ma boucle pour obtenir un état :
en
> > cours exécution ?
> >
> > J'ai essayé Refresh() mais sans résultat (autre que graphique).
> >
> >
> >