OVH Cloud OVH Cloud

Threads

5 réponses
Avatar
Philippe
Bonjour a tous
J'utilise dans une application WEB un thread qui me permet
de garder une connection a un serveur entre chaque appel=20
de page.
Mon probl=E8me est que lorsque j'invoque la m=E9thode RESUME=20
du thread j'aimerais =E9galement passer a ce thread des=20
informations (en r=E9alit=E9 une ligne de commande a execut=E9e=20
part le serveur) et que ce thread puisse me renvoyer le=20
r=E9sultat.=20
Comment puis-je obtenir ce r=E9sultat?
merci d'avance a vous tous

5 réponses

Avatar
Cédric Dardenne
Salut,

Plutôt que d'utiliser pause/resume, tu peux utiliser un Moniteur pour dire
au code dans ton thread d'attendre, et juste avant de lui dire de continuer
tu mets à jour une propriété de ton objet...

Makes sense?

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Bonjour a tous
J'utilise dans une application WEB un thread qui me permet
de garder une connection a un serveur entre chaque appel
de page.
Mon problème est que lorsque j'invoque la méthode RESUME
du thread j'aimerais également passer a ce thread des
informations (en réalité une ligne de commande a executée
part le serveur) et que ce thread puisse me renvoyer le
résultat.
Comment puis-je obtenir ce résultat?
merci d'avance a vous tous


Avatar
Merci Cédric pour ta réponse
mais je ne comprend pas bien ce que tu veux dire

Le principe de mon application est que le thread que je
crée se met en attente lui meme avec la commande suspend
et que le thread courant libère celui-ci avec la commande
resume et lui indique une variable pour qu'il puisse
executer sa partie de code et qu'ensuite il me renvoie sa
réponse, j'ai donc besoin d'envoyer et de recevoir des
informations entre les 2 threads.
-----Message d'origine-----
Salut,

Plutôt que d'utiliser pause/resume, tu peux utiliser un


Moniteur pour dire
au code dans ton thread d'attendre, et juste avant de


lui dire de continuer
tu mets à jour une propriété de ton objet...

Makes sense?

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better


idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Bonjour a tous
J'utilise dans une application WEB un thread qui me




permet
de garder une connection a un serveur entre chaque




appel
de page.
Mon problème est que lorsque j'invoque la méthode




RESUME
du thread j'aimerais également passer a ce thread des
informations (en réalité une ligne de commande a




executée
part le serveur) et que ce thread puisse me renvoyer le
résultat.
Comment puis-je obtenir ce résultat?
merci d'avance a vous tous




.



Avatar
Cédric Dardenne
Salut Philippe,

En fait, plutôt que de faire un Thread.Suspend() puis un Thread.Resume(), tu
vas utiliser un Monitor pour mettre "en pause" ton Thread.

Basiquement, tu vas utiliser Monitor.Wait pour dire à ton thread d'attendre
qu'on le notifie qu'il peut maintenant faire son job, et Monitor.Pulse pour
notifier à ton thread qu'il peut continuer son traitement. Tu appeleras
Monitor.Pulse après avoir fixé une variable avec ta ligne de commande.

Tu trouveras un exemple d'utilisation ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingmonitorclasswaittopic.asp

J'espère que cette fois-ci ça aidera un peu plus :-)

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


wrote:
Merci Cédric pour ta réponse
mais je ne comprend pas bien ce que tu veux dire

Le principe de mon application est que le thread que je
crée se met en attente lui meme avec la commande suspend
et que le thread courant libère celui-ci avec la commande
resume et lui indique une variable pour qu'il puisse
executer sa partie de code et qu'ensuite il me renvoie sa
réponse, j'ai donc besoin d'envoyer et de recevoir des
informations entre les 2 threads.
-----Message d'origine-----
Salut,

Plutôt que d'utiliser pause/resume, tu peux utiliser un Moniteur pour
dire au code dans ton thread d'attendre, et juste avant de lui dire de
continuer tu mets à jour une propriété de ton objet...

Makes sense?

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Bonjour a tous
J'utilise dans une application WEB un thread qui me permet
de garder une connection a un serveur entre chaque appel
de page.
Mon problème est que lorsque j'invoque la méthode RESUME
du thread j'aimerais également passer a ce thread des
informations (en réalité une ligne de commande a executée
part le serveur) et que ce thread puisse me renvoyer le
résultat.
Comment puis-je obtenir ce résultat?
merci d'avance a vous tous




.




Avatar
Philippe
Merci pour ta réponse et excuse moi pour ma non réponse
car je n'étais pas la hier

Je ne pense pas que monitor puisse résoudre mon problème

explications:
Le thread es démarré a partir d'une page aspx et est
réactiver a partir d'autre pages , il n'existe donc plus
d'objets qui sont référencés , j'ai besion d'indiquer au
thread la fonction qu'il doit executer lorsque je le
réactive

-----Message d'origine-----
Salut Philippe,

En fait, plutôt que de faire un Thread.Suspend() puis un


Thread.Resume(), tu
vas utiliser un Monitor pour mettre "en pause" ton


Thread.

Basiquement, tu vas utiliser Monitor.Wait pour dire à


ton thread d'attendre
qu'on le notifie qu'il peut maintenant faire son job, et


Monitor.Pulse pour
notifier à ton thread qu'il peut continuer son


traitement. Tu appeleras
Monitor.Pulse après avoir fixé une variable avec ta


ligne de commande.

Tu trouveras un exemple d'utilisation ici :
http://msdn.microsoft.com/library/default.asp?


url=/library/en-
us/cpref/html/frlrfsystemthreadingmonitorclasswaittopic.as
p

J'espère que cette fois-ci ça aidera un peu plus :-)

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better


idiots.
So far, the Universe is winning.
-- Rich Cook


wrote:
Merci Cédric pour ta réponse
mais je ne comprend pas bien ce que tu veux dire

Le principe de mon application est que le thread que je
crée se met en attente lui meme avec la commande




suspend
et que le thread courant libère celui-ci avec la




commande
resume et lui indique une variable pour qu'il puisse
executer sa partie de code et qu'ensuite il me renvoie




sa
réponse, j'ai donc besoin d'envoyer et de recevoir des
informations entre les 2 threads.
-----Message d'origine-----
Salut,

Plutôt que d'utiliser pause/resume, tu peux utiliser






un Moniteur pour
dire au code dans ton thread d'attendre, et juste






avant de lui dire de
continuer tu mets à jour une propriété de ton objet...

Makes sense?

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof






programs,
and the Universe trying to produce bigger and better






idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Bonjour a tous
J'utilise dans une application WEB un thread qui me








permet
de garder une connection a un serveur entre chaque








appel
de page.
Mon problème est que lorsque j'invoque la méthode








RESUME
du thread j'aimerais également passer a ce thread des
informations (en réalité une ligne de commande a








executée
part le serveur) et que ce thread puisse me renvoyer








le
résultat.
Comment puis-je obtenir ce résultat?
merci d'avance a vous tous




.






.



Avatar
Cédric Dardenne
Salut,

Désolé, moi non plus je n'étais pas là ces deux derniers jours :-)

Quel est ton code actuellement ? Parce que Suspend/Resume arrête un thread à
l'endroit où il est sans vrai contrôle de cet endroit justement, sauf si le
thread se suspend lui-même. Et de même, le Resume va le reprendre à
l'endroit exact où il était, sans pouvoir lui indiquer particulièrement où
aller.

Où crées-tu ton thread, dans l'Application_Start ? Comment gardes-tu sa
référence ?

Voici ce que je ferais :

1. Tu crées une classe qui gère ta méthode (qui doit tourner dans le
thread), l'object à synchroniser (ta string ligne de commande),
2. Tu instancies ta classe et tu stockes la référence de ton objet dans une
variable statique (ceci marcheras parce que les données, par défaut, sont
partagées entre les threads, ce ne serait pas le cas avec des process), ou
mieux, tant qu'à rester cohérent, dans ton objet Application,
3. Et là, tu peux implémenter tes fonctions en utilisant le même type de
code quand dans l'exemple.

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Merci pour ta réponse et excuse moi pour ma non réponse
car je n'étais pas la hier

Je ne pense pas que monitor puisse résoudre mon problème

explications:
Le thread es démarré a partir d'une page aspx et est
réactiver a partir d'autre pages , il n'existe donc plus
d'objets qui sont référencés , j'ai besion d'indiquer au
thread la fonction qu'il doit executer lorsque je le
réactive

-----Message d'origine-----
Salut Philippe,

En fait, plutôt que de faire un Thread.Suspend() puis un
Thread.Resume(), tu vas utiliser un Monitor pour mettre "en pause" ton
Thread.

Basiquement, tu vas utiliser Monitor.Wait pour dire à ton thread
d'attendre qu'on le notifie qu'il peut maintenant faire son job, et
Monitor.Pulse pour notifier à ton thread qu'il peut continuer son
traitement. Tu appeleras Monitor.Pulse après avoir fixé une variable
avec ta ligne de commande.

Tu trouveras un exemple d'utilisation ici :
http://msdn.microsoft.com/library/default.asp?


url=/library/en-
us/cpref/html/frlrfsystemthreadingmonitorclasswaittopic.as
p

J'espère que cette fois-ci ça aidera un peu plus :-)

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


wrote:
Merci Cédric pour ta réponse
mais je ne comprend pas bien ce que tu veux dire

Le principe de mon application est que le thread que je
crée se met en attente lui meme avec la commande suspend
et que le thread courant libère celui-ci avec la commande
resume et lui indique une variable pour qu'il puisse
executer sa partie de code et qu'ensuite il me renvoie sa
réponse, j'ai donc besoin d'envoyer et de recevoir des
informations entre les 2 threads.
-----Message d'origine-----
Salut,

Plutôt que d'utiliser pause/resume, tu peux utiliser un Moniteur pour
dire au code dans ton thread d'attendre, et juste avant de lui dire de
continuer tu mets à jour une propriété de ton objet...

Makes sense?

Cédric

--
Programming today is a race between software engineers
striving to build bigger and better idiot-proof programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
-- Rich Cook


Philippe wrote:
Bonjour a tous
J'utilise dans une application WEB un thread qui me permet
de garder une connection a un serveur entre chaque appel
de page.
Mon problème est que lorsque j'invoque la méthode RESUME
du thread j'aimerais également passer a ce thread des
informations (en réalité une ligne de commande a executée
part le serveur) et que ce thread puisse me renvoyer le
résultat.
Comment puis-je obtenir ce résultat?
merci d'avance a vous tous




.






.