Thread.sleep(5000) en delphi?

Signaler
Messages postés
24
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
3 novembre 2005
-
Pornman
Messages postés
21
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
20 janvier 2006
-
Bonjour

J'ai cree un Thread qui doit realiser une fonction 5 sec apres qu'il soit lance. Si je mets un sleep de la maniere suivante:

procedure TPrintThreadSH2.Execute;
begin
sleep(5000);
frmStatsPrinterMain.wbStats.Navigate(frmStatsPrinterMain.StatsDirectory + 'SH2.html?print=yes');
end;

le reste de mon application se bloque. Est il possible de bloquer juste le thread pour une duree precise?

Merci

10 réponses

Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
1
Salut Seni,

A priori tu dois avoir un soucis dans ton Thread, car j'ai tester ton problème sur l'une de mes applications et cela ne bloque pas du tout mon application.

par contre test le terminated, cela marche peut être mieux.

while not Terminated do
begin
sleep(5000);
frmStatsPrinterMain.wbStats.Navigate(frmStatsPrinterMain.StatsDirectory + 'SH2.html?print=yes');
end;


Bonne Prog,

Olivier
Messages postés
24
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
3 novembre 2005

Salut Olivier,

merci d'avoir teste mon script, j'ai opte pour le script suivant :

Function Pause(time : cardinal);
var t : cardinal;
begin
t:=GetTickCount;
repeat
Application.ProcessMessages;
until (GetTickCount-t)>time;
end;

Un peu basique mais ca marche bien.
Merci encore :)
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
1
Salut,

Certain putiste t'expliqueront qu'il faut limiter l'utilisation des ProcessMessages. Mais si cela te conviens ;)
As-tu essayés ce que je t'ai mis comme code ?
Car chez moi je n'es pas le même phénomène.

Bonne Prog,

Olivier.
Messages postés
21
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
20 janvier 2006

De mon Coter ce la meme chose que jutiilse.. Les chose les plus simple sont souvent ceux qui fonctionne le mieu :)



procedure Wait(Millisecondes: cardinal);

var

Initial: cardinal;

Final : cardinal;

begin

Initial := GetTickCount;

Final := Initial + Millisecondes;



while Initial < Final do

begin

Initial := GetTickCount;

Application.ProcessMessages;

end;

end;
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
1
Je suis entierement d'accord avec toi "Les choses les plus simple fonctionne le mieu..." mais ta procedure fonctionne du moment que ton utilisateur ne clique pas sur la barre des titres...
Car tant que l'utilisateur clique sur la barre de titre de l'application ton Wait ne rendra pas la main... Cela peux poser des problèmes dans certains cas.

Bonne Prog,

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
21
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
20 janvier 2006

hummm Tu minteresse la peu tu devlopper un peu plus ta pensee ici stp
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
1
Fait un petit prog ou tu utilises ta procedure wait et affiche un message du style ShowMessage('Fin de mon Wait') execute ton programme et clique sur la barre de titre de ton application et tu verras que tant que tu restes cliqué sur la barre de titre la boite de dialogue n'apparait pas ! car ta procedure ne rend pas la main !

Bonne Prog,

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
21
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
20 janvier 2006

Tu dit Vrai mais Comment modifier ma procedure pour kelle rende la main comem tu dit :)
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
1
En fait la seule solution que j'ai trouvé pour l'instant c'est de passer par des threads !

Bonne Prog,

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
21
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
20 janvier 2006

Pas trop fou ton idee Je vais essayer et je ten donne des nouvelle