the diouk
Messages postés21Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention25 mai 2005
-
20 mai 2005 à 11:46
the diouk
Messages postés21Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention25 mai 2005
-
23 mai 2005 à 11:29
dans le prog que je fais, j'appelle une fonction de comptage qui peut durée plusieurs heures, elle est lancée quand j'appuye sur run dans le menu. mais dès lors, toute l'uc est pris pour compté et si par exemple je click sur réduction de la fenêtre ou n'importe quelle action, ça plante.
je me suis dit qu'un thread serait bien, mais dans les définissions j'ai vu que cette fonction prennait un paramètre, ça je m'en fout, je veux juste qu'il puisse exécuter la fonction qui elle demande 2 paramètre et renvoi 1. C'est possible de lancer une fonction dans un thread ? si oui comment je lui donne les paramètres à donner à la fonction de comptage ( car ces paramètres sont définis avant dans des édit ) ???
sinon au pire je pensait juste mettre un button annuler qui permettrait de revenir à la fenêtre initiale mais pareil, comment faire en sorte que le click soit pris en compte sans que tout bug ? encore un thread ?
si quelqu'un peut me donner quelques infos se serait cool
merci
MNEMONIC
Messages postés59Date d'inscriptiondimanche 19 décembre 2004StatutMembreDernière intervention 1 septembre 2006 20 mai 2005 à 15:06
Dans la boucle la plus longue, essaye d'ajoutter une pause d'une millisec par boucle...
Grâce à cette pause, ta boucle libèrera le processeur juste assez longtemps pour laisser bosser les autres...
Sous Visual cpp, c'est Sleep(n), avec n en milli secondes.
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010 20 mai 2005 à 17:02
ou avec un thread mais en priorité basse ce qui te laissera tu temps
pour les autres application tout en ayant un controle sur le thread.
Pour controler un thread --> une application fenetré toute
bête permettant par exemple de stopper ton programme. et Comme elle est
gérer par des messages elle utilise quasiment aucun temp processeur.
the diouk
Messages postés21Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention25 mai 20051 23 mai 2005 à 11:29
j'ai utilisé Sleep, mais rien de neuf, il bug toujours, par contre c'est vrai que l'uc est partiellement libérée. J'hésite toujours à utiliser un thread : peut-t-on lui passer plusieurs variables pour qu'il puisse lui même les utiliser ?
Je m'explique : je veut qu'il fasse un threads avec ça :
while (nb < nNbAcquisitions)
{
t0 = time(NULL);
t1 = time(NULL);
while ( difftime (t0+nDuree*60,t1)>0)
{
k = DllFunc3(&b);
while(b!=2)
{
Sleep(100);
k = DllFunc3(&b);
}
j++;
Sleep(500);
if (j%2==0)SetCursor(LoadCursor(hThisInstance, IDC_HAND));
else SetCursor(LoadCursor(hThisInstance, IDC_WAIT));
t1 = time(NULL);
}
/* on en fait une moyenne */
Moyenne=j/nDuree;
if (!Moyenne)
{
MessageBox(hwnd,"aucun signal détecté\n"
"vérifier la mise en place du capteur\n"
"ou la connection USB","attention...",
MB_OK | MB_ICONWARNING);
return(0);
}
Sleep(nIntervalle*60000);
/* on affiche cette valeur dans un box */
mais peut-t-on (et comment ) lui passer les paramètres à utiliser: nDuree, nIntervalle et nbAcquisition qui eux sont déterminés plus tôt par l'utilisateur. Mais déjà là avec mes Sleep, ça devrai marcher non ?
merci si quelqu'un peut m'éclairer
Easy love Baby