PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Thread : resultats etranges   [WD7.5]
Thread : resultats etranges [WD7.5]
Débuté par GL Consult, 20 fév. 2006 11:58 - 3 réponses
Posté le 20 février 2006 - 11:58
Bonjour
dans une simple fenêtre j'ai un bouton qui lance une proc pour tester
une connections FTP
je peux cliquer plusieurs fois sur le bouton et mes tests se passent à
chaque fois bien
Si je mets cette même proc dans un thread, la 1ere fois que je clique
sur le bouton donc au 1er passage, les test sont OK.
Lorsque je reclique une 2eme fois sur ce bouton , mes test sont mauvais
C-a-d que les résultat qui étaient bon la 1ere fois deviennent mauvais
J'ai testé avec ma procédure Globale et la même proc mais locale à la
fenestre. Rien n'y fait
En proc locale même si je ferme la fenestre j'ai le même problème

De plus en plus etrange
J'ai créé un deuxieme bouton qui appel la même procédure mais en directe
sans thread.
si je test ce bouton (sans thread) en premier puis le bouton AVEC thread
tout est ok et ce a chaque fois que je clique sur un des 2 boutons
Si je test le bouton AVEC thread en premier puis celui sans thread
ensuite les test sont mauvais sauf au au 1er passage

J'ai les nerfs énervés par cette 'subtilité" qui dépasse ma
compréhension :-(
Je passe à l'équipe
MERCI
////////////////////////////////////////////////
ci-joint mon code
/////
Code du BOUTON
Adresses.B_TEST_FTP..Etat=Grisé
ThreadExécute("Thread_FTP_TEST",threadNormal,Ftp_test)
//Ftp_test() // sans thead tout est ok

//////////
PROCEDURE Ftp_test()
i , j est entier sur 1 octet
Eresultat est entier sur 1 octet
//tracedebut(trDessusTout)
//
FOR i = 1 TO Adresses.S_nbr // remet zones resultat a vide
{"OK_FTP"+i} = 0
{"OK_FTP"+i}[1]..CouleurFond=iTransparent
END
FOR i = 1 TO Adresses.S_nbr
IF {"i_test"+i} = 0 THEN// ne test que les adresses cochees
CONTINUER // remonte au dessus
END
{"OK_FTP"+i}[1]..CouleurFond=iRougeClair
MultitacheRepeint
FOR j = 1 TO 3 // 3 tentatives
Eresultat =FTPConnecte({"Adresses.S_IP"+i},+...
{"Adresses.S_nom"+i},{"Adresses.S_pass"+i},21,Vrai,20)
IF Eresultat >0 THEN
{"OK_FTP"+i}=1
{"OK_FTP"+i}[1]..CouleurFond=iVertClair
FTPDéconnecte(Eresultat)
SORTIR
END // Eresultat
END //J
END // I
Adresses.B_TEST_FTP..Etat=Actif
Beep
///////////////////////////
Posté le 20 février 2006 - 13:04
Il serait peut être plus judicieux de pooster ce message sur le forum "windev old"
Posté le 20 février 2006 - 16:36
Je l'ai fais dans les deux
Mais comme ce n'est à mon avis pas un pbl uniquement de WD7, je 'ratisse
large'


Phil a écrit :
Il serait peut être plus judicieux de pooster ce message sur le forum "windev old"


Posté le 21 février 2006 - 09:44
A mettre dans l'init du projet:ThreadMode(ThreadSectionCritique)

puis dans ta prod

PROCEDURE Ftp_test()

//------------------------------------
SectionCritiqueDébut(« toto »)
//--------------------------------------

i , j est entier sur 1 octet
Eresultat est entier sur 1 octet
//tracedebut(trDessusTout)
//
FOR i = 1 TO Adresses.S_nbr // remet zones resultat a vide
{"OK_FTP"+i} = 0
{"OK_FTP"+i}[1]..CouleurFond=iTransparent
END
FOR i = 1 TO Adresses.S_nbr
IF {"i_test"+i} = 0 THEN// ne test que les adresses cochees
CONTINUER // remonte au dessus
END
{"OK_FTP"+i}[1]..CouleurFond=iRougeClair
MultitacheRepeint
FOR j = 1 TO 3 // 3 tentatives
Eresultat =FTPConnecte({"Adresses.S_IP"+i},+...
{"Adresses.S_nom"+i},{"Adresses.S_pass"+i},21,Vrai,20)
IF Eresultat >0 THEN
{"OK_FTP"+i}=1
{"OK_FTP"+i}[1]..CouleurFond=iVertClair
FTPDéconnecte(Eresultat)
SORTIR
END // Eresultat
END //J
END // I
Adresses.B_TEST_FTP..Etat
//-----------------------------------
SectionCritiqueFin(« toto »)
//------------------------------------


salut bon dev