6xavier6
Messages postés51Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 7 février 2020
-
19 juil. 2007 à 11:32
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
19 juil. 2007 à 16:07
Bonjour,
J'ai un probleme assez complexe, je vais tenter e l'expliquer du mieux que jai pu.
- J'ai creer un programme qui appelle plusieurs fonctions les unes a la suite des autres (un programme assez long a l'execution ~10 secondes)
- Dans chaque fonction, je renvoie 0 si ca a bien marcher et -1 si je suis rentrer dans le morceau de code suivant (qui au passage stop la fonctiojn en cours)
On Error GoTo ErrorTreatment
.....
ErrorTreatment :
Creation_Arbo = -1
Exit Function
- Avant chaque appelle de fonction, je teste celle juste avant : si 0 passer a la suivante si -1 ecrire probleme avec la fonction "xxx" et arrete du programme.
Mon probleme est le suivant : Je lance le programme et je touche a rien : tous ce passe tres bien
Je lance le programme et (par megarde) ma souris click sur une liste box ou ailleur (le programme est en train de mouliner et il detecte une activite souris) et la le programme freeze avec un
-Not Responding
-Envoyer le message d'erreur Send / Don't Send
la totale koi
Les question que je me pose -Pourquoi ca freeze au lieu de me dire il y a eu un probleme avec la fonction "xxx"
-Est-ce que le probleme lié au click de la souris rentre dans un "On Error GoTo ErrorTreatment"
Merci de votre aide
Je me tient a otre disposition pour donner plus de détails si j'en ai pas donner assez
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 19 juil. 2007 à 11:49
Heeeeeeee, je n'ai pas de réponses à tes questions ,
mais te serait-il possible d'éviter que ce click ne sois possible (je
m'explique)
Au lancement de ton code (celui qui dure 10s) tu exécute une fonction qui contiens
un code du genre
Dim toto As Object
On Error Resume Next
For Each toto In Me
toto.Enabled = False
Next
On Error GoTo 0
Par contre j'imagine que tout tes objets ne sont pas à enabled = true donc il vaudrait
que tu sauvegarde cette valeur pour la réutilisé à la fin du traitement et
remettre les enabled à true là ou ça vas bien. Un tableau dynamique de boolean
me paraîtrais parfais mais fais attention à la porté de cette variable. Ou tu peut
faire une fonction VerouDeverou qui reçois un paramètre l'informant si elle
dois verrouiller ou déverrouiller les objets en définissant un tableau static
(il vaudras peut être pensé à vider ce tableau au déverrouillage mais ça je te
laisse faire).
Possible ou non ??? A vrais dire je n'ai jamais fait de truc du genre
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 19 juil. 2007 à 12:41
Salut,
Ton programme peut pas à la fois être au four (C'est à dire dans tes fonctions longues) et au moulin (C'est à dire en train de s'occuper de ce que fait le curseur de ta form vis à vis de la souris).
Quand il est au four et que tu veux qu'il s'occupe du moulin, tu fais un DoEvents comme te l'as proposé Charles Racaud. Il faut donc en placer dans les boucles longues de ton four.
Le problème avec le moulin, c'est que l'utilisateur peut y faire n'importe quoi (Demander à ton programme d'aller au four par exemple).
C'est là que Polack77 entre en scène et propose de rendre les contrôles de ta form inopérants pendant que ton programme n'a pas fini d'être au four.
Là arrive DarkSid qui voit que tu as posté sous VB.NET et VB2005 alors que tu mets des on error goto dans ton code... Donc on peut te soupçonner d'avoir posté au mauvais endroit.
Plutôt que des DoEvents (Qui existe je sais plus dans quelle classe de VB.NET), on utiliserait plutôt un thread au four et un autre au moulin dans une application VB.NET.
Ha, en effet, en dotnet, plus de On Error GoTo MachinTruc
Ca donne en dot net:
Try
'Tu Code
Catch ex as Exception1
'Tu Code: Raaah, ca marche paaaas
Catch ex as Exception2
'Encore du code, misère, y'a rien qui marche
'Catch ex as Exception3 ... (etc)
Finally
'Ca marche, ca marche pas ; on va la pour finir.
End Try
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 juil. 2007 à 13:30
Les On Error Goto existent toujours en .Net. Et oui, ils n'ont pas ancore disparus. c'est comme la mauvaise herbe, difficile de s'en débarasser.
Et même Microsoft préconise dans certaines rares conditions de les préférer aux Try Catch. Conditions que je serais bien incapable de citer, déjà qu'en VB6, je faisais l'impossible pour ne pas à avoir à les utiliser ....
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #